forked from acouzens/open5gs
fix: Receive HTTP2 message up to 8192bytes (#738)
This commit is contained in:
parent
79b0552bb0
commit
b35eb9fcf4
|
@ -899,6 +899,8 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
|
||||||
ogs_sbi_stream_t *stream = NULL;
|
ogs_sbi_stream_t *stream = NULL;
|
||||||
ogs_sbi_request_t *request = NULL;
|
ogs_sbi_request_t *request = NULL;
|
||||||
|
|
||||||
|
size_t offset = 0;
|
||||||
|
|
||||||
ogs_assert(session);
|
ogs_assert(session);
|
||||||
|
|
||||||
stream = nghttp2_session_get_stream_user_data(session, stream_id);
|
stream = nghttp2_session_get_stream_user_data(session, stream_id);
|
||||||
|
@ -912,19 +914,26 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
|
||||||
|
|
||||||
ogs_assert(data);
|
ogs_assert(data);
|
||||||
ogs_assert(len);
|
ogs_assert(len);
|
||||||
if (request->http.content) {
|
|
||||||
ogs_fatal("Content-Length [%d]", (int)request->http.content_length);
|
if (request->http.content == NULL) {
|
||||||
ogs_log_hexdump(OGS_LOG_FATAL,
|
request->http.content_length = len;
|
||||||
(uint8_t *)request->http.content, request->http.content_length);
|
request->http.content =
|
||||||
ogs_fatal("Data Size [%d]", (int)len);
|
(char*)ogs_malloc(request->http.content_length + 1);
|
||||||
ogs_log_hexdump(OGS_LOG_FATAL, data, len);
|
ogs_assert(request->http.content);
|
||||||
ogs_assert_if_reached();
|
} else {
|
||||||
|
offset = request->http.content_length;
|
||||||
|
if ((request->http.content_length + len) > OGS_HUGE_LEN) {
|
||||||
|
ogs_error("Overflow : Content-Length[%d], len[%d]",
|
||||||
|
(int)request->http.content_length, (int)len);
|
||||||
|
ogs_assert_if_reached();
|
||||||
|
}
|
||||||
|
request->http.content_length += len;
|
||||||
|
request->http.content = (char *)ogs_realloc(
|
||||||
|
request->http.content, request->http.content_length + 1);
|
||||||
|
ogs_assert(request->http.content);
|
||||||
}
|
}
|
||||||
|
|
||||||
request->http.content_length = len;
|
memcpy(request->http.content + offset, data, len);
|
||||||
request->http.content = (char*)ogs_malloc(request->http.content_length + 1);
|
|
||||||
ogs_assert(request->http.content);
|
|
||||||
memcpy(request->http.content, data, len);
|
|
||||||
request->http.content[request->http.content_length] = '\0';
|
request->http.content[request->http.content_length] = '\0';
|
||||||
|
|
||||||
ogs_debug("RECEIVED");
|
ogs_debug("RECEIVED");
|
||||||
|
|
Loading…
Reference in New Issue