@ -223,12 +223,16 @@ void httpdQueueHeader(HttpdConnData *conn, const char *header, const char *value
strcat ( queEntry - > headerLine , value ) ;
strcat ( queEntry - > headerLine , " \r \n " ) ;
// Attach it to the linked list
HttpdQueuedHeader * * ph = & conn - > priv - > headersToSend ;
while ( * ph ) {
ph = & ( * ph ) - > next ;
if ( ! conn - > priv - > headersToSend ) {
conn - > priv - > headersToSend = queEntry ;
} else {
HttpdQueuedHeader * ph = conn - > priv - > headersToSend ;
// Go to the end of the linked list
while ( ph - > next ) {
ph = ph - > next ;
}
ph - > next = queEntry ;
}
* ph = queEntry ;
}
void httdSetTransferMode ( HttpdConnData * conn , httpd_transfer_opt mode )
@ -292,8 +296,9 @@ void httpdHeader(HttpdConnData *conn, const char *field, const char *val)
//Finish the headers.
void httpdEndHeaders ( HttpdConnData * conn )
{
// Add queued headers
// Add queued headers & dealloc the struct
HttpdQueuedHeader * qh = conn - > priv - > headersToSend ;
conn - > priv - > headersToSend = NULL ;
while ( qh ) {
httpdSendStr ( conn , qh - > headerLine ) ;
HttpdQueuedHeader * next = qh - > next ;
@ -473,7 +478,7 @@ bool httpdFlushSendBuffer(HttpdConnData *conn)
return true ;
}
void httpdCgiIsDone ( HttpdConnData * conn )
static void httpdCgiIsDone ( HttpdConnData * conn )
{
conn - > cgi = NULL ; //no need to call this anymore
if ( conn - > priv - > flags & HFL_CHUNKED ) {
@ -723,7 +728,7 @@ static void httpdParseHeader(char *h, HttpdConnData *conn)
http_dbg ( " Mallocced buffer for %d + 1 bytes of post data. " , ( int ) conn - > post - > buffSize ) ;
conn - > post - > buff = ( char * ) httpdPlatMalloc ( conn - > post - > buffSize + 1 ) ;
if ( conn - > post - > buff = = NULL ) {
http_error ( " ...failed! " ) ;
http_error ( " post buf alloc failed " ) ;
return ;
}
conn - > post - > buffLen = 0 ;
@ -937,10 +942,15 @@ int httpdConnectCb(ConnTypePtr conn, const uint8_t *remIp, uint16_t remPort)
}
memset ( s_connData [ i ] , 0 , sizeof ( HttpdConnData ) ) ;
s_connData [ i ] - > priv = httpdPlatMalloc ( sizeof ( HttpdPriv ) ) ;
if ( s_connData [ i ] - > priv = = NULL ) {
http_error ( " Out of memory allocating connData priv struct! " ) ;
httpdPlatUnlock ( ) ;
return 0 ;
}
memset ( s_connData [ i ] - > priv , 0 , sizeof ( HttpdPriv ) ) ;
s_connData [ i ] - > conn = conn ;
s_connData [ i ] - > slot = i ;
s_connData [ i ] - > priv - > headPos = 0 ;
// s_connData[i]->priv->headPos = 0;
s_connData [ i ] - > post = httpdPlatMalloc ( sizeof ( HttpdPostData ) ) ;
if ( s_connData [ i ] - > post = = NULL ) {
http_error ( " Out of memory allocating connData post struct! " ) ;
@ -948,14 +958,15 @@ int httpdConnectCb(ConnTypePtr conn, const uint8_t *remIp, uint16_t remPort)
return 0 ;
}
memset ( s_connData [ i ] - > post , 0 , sizeof ( HttpdPostData ) ) ;
s_connData [ i ] - > post - > buff = NULL ;
s_connData [ i ] - > post - > buffLen = 0 ;
s_connData [ i ] - > post - > received = 0 ;
// s_connData[i]->post->buff = NULL;
// s_connData[i]->post->buffLen = 0;
// s_connData[i]->post->received = 0;
s_connData [ i ] - > post - > len = - 1 ;
s_connData [ i ] - > hostName = NULL ;
// s_connData[i]->hostName = NULL;
s_connData [ i ] - > remote_port = remPort ;
s_connData [ i ] - > priv - > sendBacklog = NULL ;
s_connData [ i ] - > priv - > sendBacklogSize = 0 ;
// s_connData[i]->priv->sendBacklog = NULL;
// s_connData[i]->priv->headersToSend = NULL;
// s_connData[i]->priv->sendBacklogSize = 0;
memcpy ( s_connData [ i ] - > remote_ip , remIp , 4 ) ;
httpdPlatUnlock ( ) ;