From: Joshua Colp Date: Thu, 28 Feb 2019 11:28:00 +0000 (-0600) Subject: Revert "http.c: Support separated HTTP request" X-Git-Tag: 13.26.0-rc1~38^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f4a15101b5f41084f30a068b1d98fc05f92334a;p=thirdparty%2Fasterisk.git Revert "http.c: Support separated HTTP request" This reverts commit 148ddfba9afc83b102fadabecf67d48a65e30e4a. Reason for revert: Under 13 this change appears to break HTTP body processing, causing test failures and problems. Change-Id: Ica47ca2cac1b21c6ef907c1ffbfaf2cebdea8e80 --- diff --git a/main/http.c b/main/http.c index cf2ff5e3f5..136c916814 100644 --- a/main/http.c +++ b/main/http.c @@ -84,18 +84,11 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") /*! Maximum application/json or application/x-www-form-urlencoded body content length. */ #if !defined(LOW_MEMORY) -#define MAX_CONTENT_LENGTH 40960 +#define MAX_CONTENT_LENGTH 4096 #else #define MAX_CONTENT_LENGTH 1024 #endif /* !defined(LOW_MEMORY) */ -/*! Initial response body length. */ -#if !defined(LOW_MEMORY) -#define INITIAL_RESPONSE_BODY_BUFFER 1024 -#else -#define INITIAL_RESPONSE_BODY_BUFFER 512 -#endif /* !defined(LOW_MEMORY) */ - /*! Maximum line length for HTTP requests. */ #if !defined(LOW_MEMORY) #define MAX_HTTP_LINE_LENGTH 4096 @@ -570,7 +563,7 @@ void ast_http_create_response(struct ast_tcptls_session_instance *ser, int statu { char server_name[MAX_SERVER_NAME_LENGTH]; struct ast_str *server_address = ast_str_create(MAX_SERVER_NAME_LENGTH); - struct ast_str *out = ast_str_create(INITIAL_RESPONSE_BODY_BUFFER); + struct ast_str *out = ast_str_create(MAX_CONTENT_LENGTH); if (!http_header_data || !server_address || !out) { ast_free(http_header_data); @@ -929,30 +922,19 @@ void ast_http_body_read_status(struct ast_tcptls_session_instance *ser, int read static int http_body_read_contents(struct ast_tcptls_session_instance *ser, char *buf, int length, const char *what_getting) { int res; - int total = 0; - - /* Stream is in exclusive mode so we get it all if possible. */ - while (total != length) { - /* - * NOTE: Because ser->f is a non-standard FILE *, fread() does not behave as - * documented. - */ - - /* Stay in fread until get all the expected data or timeout. */ - res = fread(buf + total, length - total, 1, ser->f); - if (res <= 0) { - break; - } - total += res; - } + /* + * NOTE: Because ser->f is a non-standard FILE *, fread() does not behave as + * documented. + */ - if (total != length) { - ast_log(LOG_WARNING, "Wrong HTTP content read. Request %s (Wanted %d, Read %d)\n", - what_getting, length, res); + /* Stay in fread until get all the expected data or timeout. */ + res = fread(buf, length, 1, ser->f); + if (res < 1) { + ast_log(LOG_WARNING, "Short HTTP request %s (Wanted %d)\n", + what_getting, length); return -1; } - return 0; }