Hook up onAborted, fix a bunch of quic crashes
This commit is contained in:
+12
-7
@@ -22,7 +22,7 @@ namespace uWS {
|
|||||||
// we don't have a way to know EOF?
|
// we don't have a way to know EOF?
|
||||||
Http3ResponseData *responseData = (Http3ResponseData *) us_quic_stream_ext(s);
|
Http3ResponseData *responseData = (Http3ResponseData *) us_quic_stream_ext(s);
|
||||||
|
|
||||||
if (responseData) {
|
if (responseData->onData) {
|
||||||
responseData->onData({data, length}, true);
|
responseData->onData({data, length}, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,13 +32,18 @@ namespace uWS {
|
|||||||
//printf("Stream opened!\n");
|
//printf("Stream opened!\n");
|
||||||
|
|
||||||
// inplace initialize Http3ResponseData here
|
// inplace initialize Http3ResponseData here
|
||||||
|
|
||||||
|
new (us_quic_stream_ext(s)) Http3ResponseData();
|
||||||
});
|
});
|
||||||
us_quic_socket_context_on_close(context, [](us_quic_socket_t *s) {
|
us_quic_socket_context_on_close(context, [](us_quic_socket_t *s) {
|
||||||
printf("Disconnected!\n");
|
printf("Disconnected!\n");
|
||||||
|
|
||||||
});
|
});
|
||||||
us_quic_socket_context_on_stream_writable(context, [](us_quic_stream_t *s) {
|
us_quic_socket_context_on_stream_writable(context, [](us_quic_stream_t *s) {
|
||||||
// Http3ResponseData *responseData = us_quic_stream_ext(s);
|
// Http3ResponseData *responseData = us_quic_stream_ext(s);
|
||||||
// responseData->onWritable();
|
// responseData->onWritable();
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
us_quic_socket_context_on_stream_headers(context, [](us_quic_stream_t *s) {
|
us_quic_socket_context_on_stream_headers(context, [](us_quic_stream_t *s) {
|
||||||
|
|
||||||
@@ -52,19 +57,19 @@ namespace uWS {
|
|||||||
contextData->router.getUserData() = {(Http3Response *) s, (Http3Request *) nullptr};
|
contextData->router.getUserData() = {(Http3Response *) s, (Http3Request *) nullptr};
|
||||||
contextData->router.route(upperCasedMethod, "/");
|
contextData->router.route(upperCasedMethod, "/");
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
us_quic_socket_context_on_open(context, [](us_quic_socket_t *s, int is_client) {
|
us_quic_socket_context_on_open(context, [](us_quic_socket_t *s, int is_client) {
|
||||||
printf("Connection established!\n");
|
printf("Connection established!\n");
|
||||||
});
|
});
|
||||||
us_quic_socket_context_on_stream_close(context, [](us_quic_stream_t *s) {
|
us_quic_socket_context_on_stream_close(context, [](us_quic_stream_t *s) {
|
||||||
|
|
||||||
// Http3ResponseData *responseData = us_quic_stream_ext(s);
|
Http3ResponseData *responseData = (Http3ResponseData *) us_quic_stream_ext(s);
|
||||||
// responseData->onAborted();
|
|
||||||
|
if (responseData->onAborted) {
|
||||||
|
responseData->onAborted();
|
||||||
|
}
|
||||||
|
|
||||||
//printf("Stream closed\n");
|
responseData->~Http3ResponseData();
|
||||||
|
|
||||||
// inplace destruct Http3ResponseData here
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return (Http3Context *) context;
|
return (Http3Context *) context;
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
namespace uWS {
|
namespace uWS {
|
||||||
struct Http3ResponseData {
|
struct Http3ResponseData {
|
||||||
|
|
||||||
MoveOnlyFunction<void()> onAborted;
|
MoveOnlyFunction<void()> onAborted = nullptr;
|
||||||
MoveOnlyFunction<void(std::string_view, bool)> onData;
|
MoveOnlyFunction<void(std::string_view, bool)> onData = nullptr;
|
||||||
|
|
||||||
// hasWrittenStatus
|
// hasWrittenStatus
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user