Loading src/httpd.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -1625,6 +1625,21 @@ void libhttppp::HttpEvent::ResponseEvent(netplus::con &curcon,const int tid,ULON cureq.SendData.append(out.data(), out.size()); } } // Process any remaining H2 frames that couldn't be handled // in the previous Http2RequestEvent call (reprocess_count limit). // Without this, HEADERS frames for additional streams stall // until the next EPOLLIN (which may never fire if the client // is waiting for responses). if (cureq.RecvData.size() >= H2_FRAME_HEADER_LEN) { static const netplus::ssl::FramingCallback nullCb; if (auto *sslsock = dynamic_cast<netplus::ssl*>(curcon.slots[0].csock.get())) { Http2RequestEvent(curcon, tid, args, sslsock->getSelectedAlpn(), sslsock->getFramingCallback()); } else { Http2RequestEvent(curcon, tid, args, "h2c", nullCb); } } return; } Loading Loading
src/httpd.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -1625,6 +1625,21 @@ void libhttppp::HttpEvent::ResponseEvent(netplus::con &curcon,const int tid,ULON cureq.SendData.append(out.data(), out.size()); } } // Process any remaining H2 frames that couldn't be handled // in the previous Http2RequestEvent call (reprocess_count limit). // Without this, HEADERS frames for additional streams stall // until the next EPOLLIN (which may never fire if the client // is waiting for responses). if (cureq.RecvData.size() >= H2_FRAME_HEADER_LEN) { static const netplus::ssl::FramingCallback nullCb; if (auto *sslsock = dynamic_cast<netplus::ssl*>(curcon.slots[0].csock.get())) { Http2RequestEvent(curcon, tid, args, sslsock->getSelectedAlpn(), sslsock->getFramingCallback()); } else { Http2RequestEvent(curcon, tid, args, "h2c", nullCb); } } return; } Loading