@@ -122,7 +122,7 @@ static int ICACHE_FLASH_ATTR http_chunked_decode( const char * chunked, char * d
122
122
*
123
123
*/
124
124
125
- return (j );
125
+ return (decode_size );
126
126
}
127
127
128
128
@@ -306,6 +306,7 @@ static void ICACHE_FLASH_ATTR http_disconnect_callback( void * arg )
306
306
request_args_t * req = (request_args_t * ) conn -> reverse ;
307
307
int http_status = -1 ;
308
308
char * body = "" ;
309
+ int body_size = 0 ;
309
310
310
311
// Turn off timeout timer
311
312
os_timer_disarm ( & (req -> timeout_timer ) );
@@ -411,15 +412,17 @@ static void ICACHE_FLASH_ATTR http_disconnect_callback( void * arg )
411
412
body = body + 4 ;
412
413
}
413
414
415
+ body_size = req -> buffer_size - (body - req -> buffer );
414
416
if ( strcasestr ( req -> buffer , "Transfer-Encoding: chunked" ) )
415
417
{
416
- int body_size = req -> buffer_size - (body - req -> buffer );
417
- char chunked_decode_buffer [body_size ];
418
+ char * chunked_decode_buffer = os_malloc (body_size );
418
419
os_memset ( chunked_decode_buffer , 0 , body_size );
419
420
/* Chuncked data */
420
- http_chunked_decode ( body , chunked_decode_buffer );
421
+ body_size = http_chunked_decode ( body , chunked_decode_buffer );
421
422
os_memcpy ( body , chunked_decode_buffer , body_size );
423
+ os_free ( chunked_decode_buffer );
422
424
}
425
+ else -- body_size ;
423
426
}
424
427
}
425
428
}
@@ -432,7 +435,7 @@ static void ICACHE_FLASH_ATTR http_disconnect_callback( void * arg )
432
435
433
436
http_free_req ( req );
434
437
435
- req_callback ( body , http_status , & req_buffer );
438
+ req_callback ( body , http_status , & req_buffer , body_size );
436
439
if (req_buffer ) {
437
440
os_free (req_buffer );
438
441
}
@@ -498,7 +501,7 @@ static void ICACHE_FLASH_ATTR http_dns_callback( const char * hostname, ip_addr_
498
501
HTTPCLIENT_ERR ( "DNS failed for %s" , hostname );
499
502
if ( req -> callback_handle != NULL )
500
503
{
501
- req -> callback_handle ( "" , -1 , NULL );
504
+ req -> callback_handle ( "" , -1 , NULL , 0 );
502
505
}
503
506
http_free_req ( req );
504
507
}
0 commit comments