|
|
|
@ -82,11 +82,18 @@
|
|
|
|
|
|
|
|
|
|
/*! Maximum application/json or application/x-www-form-urlencoded body content length. */
|
|
|
|
|
#if !defined(LOW_MEMORY)
|
|
|
|
|
#define MAX_CONTENT_LENGTH 4096
|
|
|
|
|
#define MAX_CONTENT_LENGTH 40960
|
|
|
|
|
#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
|
|
|
|
@ -557,7 +564,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(MAX_CONTENT_LENGTH);
|
|
|
|
|
struct ast_str *out = ast_str_create(INITIAL_RESPONSE_BODY_BUFFER);
|
|
|
|
|
|
|
|
|
|
if (!http_header_data || !server_address || !out) {
|
|
|
|
|
ast_free(http_header_data);
|
|
|
|
@ -916,14 +923,24 @@ 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. */
|
|
|
|
|
res = ast_iostream_read(ser->stream, buf, length);
|
|
|
|
|
if (res < length) {
|
|
|
|
|
ast_log(LOG_WARNING, "Short HTTP request %s (Wanted %d)\n",
|
|
|
|
|
what_getting, length);
|
|
|
|
|
while (total != length) {
|
|
|
|
|
res = ast_iostream_read(ser->stream, buf + total, length - total);
|
|
|
|
|
if (res <= 0) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
total += res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (total != length) {
|
|
|
|
|
ast_log(LOG_WARNING, "Wrong HTTP content read. Request %s (Wanted %d, Read %d)\n",
|
|
|
|
|
what_getting, length, res);
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|