aboutsummaryrefslogtreecommitdiff
path: root/src/deps/libuwsockets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/deps/libuwsockets.cpp')
-rw-r--r--src/deps/libuwsockets.cpp45
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) {