|
@@ -302,12 +302,12 @@ void HttpHandler::onMessageComplete() {
|
|
|
addResponseHeaders();
|
|
addResponseHeaders();
|
|
|
|
|
|
|
|
// upgrade ? handleUpgrade : HandleHttpRequest
|
|
// upgrade ? handleUpgrade : HandleHttpRequest
|
|
|
- upgrade = 0;
|
|
|
|
|
- auto iter_upgrade = req->headers.find("upgrade");
|
|
|
|
|
- if (iter_upgrade != req->headers.end()) {
|
|
|
|
|
- upgrade = 1;
|
|
|
|
|
- handleUpgrade(iter_upgrade->second.c_str());
|
|
|
|
|
- status_code = resp->status_code;
|
|
|
|
|
|
|
+ if (upgrade) {
|
|
|
|
|
+ auto iter_upgrade = req->headers.find("upgrade");
|
|
|
|
|
+ if (iter_upgrade != req->headers.end()) {
|
|
|
|
|
+ handleUpgrade(iter_upgrade->second.c_str());
|
|
|
|
|
+ status_code = resp->status_code;
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
status_code = HandleHttpRequest();
|
|
status_code = HandleHttpRequest();
|
|
|
if (status_code != HTTP_STATUS_NEXT) {
|
|
if (status_code != HTTP_STATUS_NEXT) {
|
|
@@ -342,6 +342,9 @@ void HttpHandler::handleRequestHeaders() {
|
|
|
// keepalive
|
|
// keepalive
|
|
|
keepalive = pReq->IsKeepAlive();
|
|
keepalive = pReq->IsKeepAlive();
|
|
|
|
|
|
|
|
|
|
+ // upgrade
|
|
|
|
|
+ upgrade = pReq->IsUpgrade();
|
|
|
|
|
+
|
|
|
// proxy
|
|
// proxy
|
|
|
proxy = forward_proxy = reverse_proxy = 0;
|
|
proxy = forward_proxy = reverse_proxy = 0;
|
|
|
if (hv::startswith(pReq->url, "http")) {
|
|
if (hv::startswith(pReq->url, "http")) {
|
|
@@ -1107,6 +1110,7 @@ void HttpHandler::onProxyConnect(hio_t* upstream_io) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// NOTE: start recv request continue then upstream
|
|
// NOTE: start recv request continue then upstream
|
|
|
|
|
+ if (handler->upgrade) hio_setcb_read(io, hio_write_upstream);
|
|
|
hio_read_start(io);
|
|
hio_read_start(io);
|
|
|
// NOTE: start recv response then upstream
|
|
// NOTE: start recv response then upstream
|
|
|
hio_setcb_read(upstream_io, hio_write_upstream);
|
|
hio_setcb_read(upstream_io, hio_write_upstream);
|