mirror of
				https://github.com/open5gs/open5gs.git
				synced 2025-11-04 05:53:18 +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