mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-18 21:48:56 +00:00
fix: Receive HTTP2 message up to 8192bytes (#738)
This commit is contained in:
@@ -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);
|
||||||
|
} 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();
|
ogs_assert_if_reached();
|
||||||
}
|
}
|
||||||
|
request->http.content_length += len;
|
||||||
request->http.content_length = len;
|
request->http.content = (char *)ogs_realloc(
|
||||||
request->http.content = (char*)ogs_malloc(request->http.content_length + 1);
|
request->http.content, request->http.content_length + 1);
|
||||||
ogs_assert(request->http.content);
|
ogs_assert(request->http.content);
|
||||||
memcpy(request->http.content, data, len);
|
}
|
||||||
|
|
||||||
|
memcpy(request->http.content + offset, data, len);
|
||||||
request->http.content[request->http.content_length] = '\0';
|
request->http.content[request->http.content_length] = '\0';
|
||||||
|
|
||||||
ogs_debug("RECEIVED");
|
ogs_debug("RECEIVED");
|
||||||
|
|||||||
Reference in New Issue
Block a user