]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Revert "http.c: Support separated HTTP request"
authorJoshua Colp <jcolp@digium.com>
Thu, 28 Feb 2019 11:28:00 +0000 (05:28 -0600)
committerJoshua Colp <jcolp@digium.com>
Thu, 28 Feb 2019 11:28:00 +0000 (05:28 -0600)
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

main/http.c

index cf2ff5e3f51b9c5a94428520eff7d62bd1bb0140..136c916814d0c472a20e22c6aff8af9c393a6f8b 100644 (file)
@@ -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;
 }