Add support for extracting the multipart form boundary for later use by cgi
This commit is contained in:
@@ -376,6 +376,17 @@ static void ICACHE_FLASH_ATTR httpdParseHeader(char *h, HttpdConnData *conn) {
|
|||||||
conn->postBuff=(char*)os_malloc(conn->postLen+1);
|
conn->postBuff=(char*)os_malloc(conn->postLen+1);
|
||||||
}
|
}
|
||||||
conn->priv->postPos=0;
|
conn->priv->postPos=0;
|
||||||
|
} else if (os_strncmp(h, "Content-Type: ", 14)==0) {
|
||||||
|
if(os_strstr(h, "multipart/form-data")){
|
||||||
|
// It's multipart form data so let's pull out the boundary for future use
|
||||||
|
char *b;
|
||||||
|
if((b = os_strstr(h, "boundary=")) != NULL){
|
||||||
|
conn->multipartBoundary = b + 7; // move the pointer 2 chars before boundary then fill them with dashes
|
||||||
|
conn->multipartBoundary[0] = '-';
|
||||||
|
conn->multipartBoundary[1] = '-';
|
||||||
|
os_printf("boundary = %s\n", conn->multipartBoundary);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -423,6 +434,7 @@ static void ICACHE_FLASH_ATTR httpdRecvCb(void *arg, char *data, unsigned short
|
|||||||
if (conn->priv->postPos>=conn->postLen) {
|
if (conn->priv->postPos>=conn->postLen) {
|
||||||
//Received post stuff.
|
//Received post stuff.
|
||||||
conn->postBuff[conn->priv->postPos]=0; //zero-terminate
|
conn->postBuff[conn->priv->postPos]=0; //zero-terminate
|
||||||
|
conn->postBuffLen = conn->priv->postPos;
|
||||||
conn->priv->postPos=-1;
|
conn->priv->postPos=-1;
|
||||||
os_printf("Post data: %s\n", conn->postBuff);
|
os_printf("Post data: %s\n", conn->postBuff);
|
||||||
//Send the response.
|
//Send the response.
|
||||||
@@ -434,6 +446,7 @@ static void ICACHE_FLASH_ATTR httpdRecvCb(void *arg, char *data, unsigned short
|
|||||||
|
|
||||||
if(conn->priv->postPos > 0 && conn->stream){
|
if(conn->priv->postPos > 0 && conn->stream){
|
||||||
conn->postBuff[conn->priv->postPos]=0; //zero-terminate
|
conn->postBuff[conn->priv->postPos]=0; //zero-terminate
|
||||||
|
conn->postBuffLen = conn->priv->postPos;
|
||||||
r=conn->cgi(conn);
|
r=conn->cgi(conn);
|
||||||
if (r!=HTTPD_CGI_NOTFOUND) {
|
if (r!=HTTPD_CGI_NOTFOUND) {
|
||||||
if (r==HTTPD_CGI_DONE){
|
if (r==HTTPD_CGI_DONE){
|
||||||
|
|||||||
@@ -28,9 +28,11 @@ struct HttpdConnData {
|
|||||||
char *getArgs;
|
char *getArgs;
|
||||||
const void *cgiArg;
|
const void *cgiArg;
|
||||||
void *cgiData;
|
void *cgiData;
|
||||||
|
char *multipartBoundary;
|
||||||
HttpdPriv *priv;
|
HttpdPriv *priv;
|
||||||
cgiSendCallback cgi;
|
cgiSendCallback cgi;
|
||||||
int postLen;
|
int postLen;
|
||||||
|
int postBuffLen;
|
||||||
int postReceived;
|
int postReceived;
|
||||||
char *postBuff;
|
char *postBuff;
|
||||||
int stream;
|
int stream;
|
||||||
|
|||||||
Reference in New Issue
Block a user