|
|
@@ -45,20 +45,11 @@ bool HttpHandler::Init(int http_version, hio_t* io) {
|
|
|
resp->http_major = req->http_major = 2;
|
|
|
resp->http_minor = req->http_minor = 0;
|
|
|
}
|
|
|
- parser->InitRequest(req.get());
|
|
|
if (io) {
|
|
|
writer.reset(new hv::HttpResponseWriter(io, resp));
|
|
|
writer->status = hv::SocketChannel::CONNECTED;
|
|
|
}
|
|
|
- // NOTE: hook http_cb
|
|
|
- req->http_cb = [this](HttpMessage* msg, http_parser_state state, const char* data, size_t size) {
|
|
|
- if (state == HP_HEADERS_COMPLETE) {
|
|
|
- onHeadersComplete();
|
|
|
- }
|
|
|
- if (api_handler && api_handler->state_handler) {
|
|
|
- api_handler->state_handler(getHttpContext(), state, data, size);
|
|
|
- }
|
|
|
- };
|
|
|
+ initRequest();
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -66,14 +57,28 @@ void HttpHandler::Reset() {
|
|
|
state = WANT_RECV;
|
|
|
req->Reset();
|
|
|
resp->Reset();
|
|
|
- parser->InitRequest(req.get());
|
|
|
ctx = NULL;
|
|
|
api_handler = NULL;
|
|
|
closeFile();
|
|
|
if (writer) {
|
|
|
writer->Begin();
|
|
|
writer->onwrite = NULL;
|
|
|
+ writer->onclose = NULL;
|
|
|
}
|
|
|
+ initRequest();
|
|
|
+}
|
|
|
+
|
|
|
+void HttpHandler::initRequest() {
|
|
|
+ parser->InitRequest(req.get());
|
|
|
+ // NOTE: hook http_cb
|
|
|
+ req->http_cb = [this](HttpMessage* msg, http_parser_state state, const char* data, size_t size) {
|
|
|
+ if (state == HP_HEADERS_COMPLETE) {
|
|
|
+ onHeadersComplete();
|
|
|
+ }
|
|
|
+ if (api_handler && api_handler->state_handler) {
|
|
|
+ api_handler->state_handler(getHttpContext(), state, data, size);
|
|
|
+ }
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
bool HttpHandler::SwitchHTTP2() {
|