diff options
Diffstat (limited to 'src/deps/libuwsockets.cpp')
-rw-r--r-- | src/deps/libuwsockets.cpp | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/src/deps/libuwsockets.cpp b/src/deps/libuwsockets.cpp index 7eba32d44..f854cafdb 100644 --- a/src/deps/libuwsockets.cpp +++ b/src/deps/libuwsockets.cpp @@ -793,11 +793,17 @@ void uws_res_write_header_int(int ssl, uws_res_t *res, const char *key, void uws_res_end_without_body(int ssl, uws_res_t *res) { if (ssl) { uWS::HttpResponse<true> *uwsRes = (uWS::HttpResponse<true> *)res; - uwsRes->endWithoutBody(0); + uwsRes->getHttpResponseData()->state |= + uWS::HttpResponseData<true>::HTTP_END_CALLED; + uwsRes->markDone(uwsRes->getHttpResponseData()); + us_socket_timeout(true, (us_socket_t *)uwsRes, uWS::HTTP_TIMEOUT_S); } else { uWS::HttpResponse<false> *uwsRes = (uWS::HttpResponse<false> *)res; - uwsRes->endWithoutBody(0); + uwsRes->getHttpResponseData()->state |= + uWS::HttpResponseData<false>::HTTP_END_CALLED; + uwsRes->markDone(uwsRes->getHttpResponseData()); + us_socket_timeout(false, (us_socket_t *)uwsRes, uWS::HTTP_TIMEOUT_S); } } @@ -1002,15 +1008,13 @@ void uws_res_write_headers(int ssl, uws_res_t *res, const StringPointer *names, } void uws_res_uncork(int ssl, uws_res_t *res) { - // if (ssl) { - // uWS::HttpResponse<true> *uwsRes = - // (uWS::HttpResponse<true> *)res; - // uwsRes->uncork(); - // } else { - // uWS::HttpResponse<false> *uwsRes = - // (uWS::HttpResponse<false> *)res; - // uwsRes->uncork(); - // } + if (ssl) { + uWS::HttpResponse<true> *uwsRes = (uWS::HttpResponse<true> *)res; + uwsRes->uncork(); + } else { + uWS::HttpResponse<false> *uwsRes = (uWS::HttpResponse<false> *)res; + uwsRes->uncork(); + } } void us_socket_mark_needs_more_not_ssl(uws_res_t *res) { @@ -1035,12 +1039,31 @@ void uws_res_cork(int ssl, uws_res_t *res, void *ctx, if (ssl) { uWS::HttpResponse<true> *uwsRes = (uWS::HttpResponse<true> *)res; uwsRes->cork([ctx, corker]() { corker(ctx); }); + } else { uWS::HttpResponse<false> *uwsRes = (uWS::HttpResponse<false> *)res; uwsRes->cork([ctx, corker]() { corker(ctx); }); } } +void uws_res_prepare_for_sendfile(int ssl, uws_res_t *res) { + if (ssl) { + uWS::HttpResponse<true> *uwsRes = (uWS::HttpResponse<true> *)res; + auto pair = uwsRes->getSendBuffer(2); + char *ptr = pair.first; + ptr[0] = '\r'; + ptr[1] = '\n'; + uwsRes->uncork(); + } else { + uWS::HttpResponse<false> *uwsRes = (uWS::HttpResponse<false> *)res; + auto pair = uwsRes->getSendBuffer(2); + char *ptr = pair.first; + ptr[0] = '\r'; + ptr[1] = '\n'; + uwsRes->uncork(); + } +} + bool uws_res_try_end(int ssl, uws_res_t *res, const char *bytes, size_t len, size_t total_len) { if (ssl) { |