upnphttp.c: add comments about ParseHttpHeaders()
This commit is contained in:
parent
ea141830f6
commit
50965a6ae1
|
@ -3,6 +3,8 @@ $Id: Changelog.txt,v 1.322 2013/01/29 21:52:44 nanard Exp $
|
||||||
2013/01/29:
|
2013/01/29:
|
||||||
upnphttp.c: Fix and comment the findendheaders() function
|
upnphttp.c: Fix and comment the findendheaders() function
|
||||||
upnphttp.c: remove strchr() call in ParseHttpHeaders()
|
upnphttp.c: remove strchr() call in ParseHttpHeaders()
|
||||||
|
add comments to explain how buffer is checked before calls
|
||||||
|
to ParseHttpHeaders()
|
||||||
|
|
||||||
2013/01/27:
|
2013/01/27:
|
||||||
upnphttp.c: ParseHttpHeaders() now checks atoi() return
|
upnphttp.c: ParseHttpHeaders() now checks atoi() return
|
||||||
|
|
|
@ -71,7 +71,9 @@ Delete_upnphttp(struct upnphttp * h)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse HttpHeaders of the REQUEST */
|
/* parse HttpHeaders of the REQUEST
|
||||||
|
* This function is called after the \r\n\r\n character
|
||||||
|
* sequence has been found in h->req_buf */
|
||||||
static void
|
static void
|
||||||
ParseHttpHeaders(struct upnphttp * h)
|
ParseHttpHeaders(struct upnphttp * h)
|
||||||
{
|
{
|
||||||
|
@ -79,8 +81,9 @@ ParseHttpHeaders(struct upnphttp * h)
|
||||||
char * colon;
|
char * colon;
|
||||||
char * p;
|
char * p;
|
||||||
int n;
|
int n;
|
||||||
|
if((h->req_buf == NULL) || (h->req_contentoff <= 0))
|
||||||
|
return;
|
||||||
line = h->req_buf;
|
line = h->req_buf;
|
||||||
/* TODO : check if req_buf, contentoff are ok */
|
|
||||||
while(line < (h->req_buf + h->req_contentoff))
|
while(line < (h->req_buf + h->req_contentoff))
|
||||||
{
|
{
|
||||||
colon = line;
|
colon = line;
|
||||||
|
@ -116,9 +119,7 @@ ParseHttpHeaders(struct upnphttp * h)
|
||||||
while(*p == ':' || *p == ' ' || *p == '\t')
|
while(*p == ':' || *p == ' ' || *p == '\t')
|
||||||
p++;
|
p++;
|
||||||
while(p[n]>=' ')
|
while(p[n]>=' ')
|
||||||
{
|
|
||||||
n++;
|
n++;
|
||||||
}
|
|
||||||
if((p[0] == '"' && p[n-1] == '"')
|
if((p[0] == '"' && p[n-1] == '"')
|
||||||
|| (p[0] == '\'' && p[n-1] == '\''))
|
|| (p[0] == '\'' && p[n-1] == '\''))
|
||||||
{
|
{
|
||||||
|
@ -212,6 +213,9 @@ intervening space) by either an integer or the keyword "infinite". */
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
/* the loop below won't run off the end of the buffer
|
||||||
|
* because the buffer is guaranteed to contain the \r\n\r\n
|
||||||
|
* character sequence */
|
||||||
while(!(line[0] == '\r' && line[1] == '\n'))
|
while(!(line[0] == '\r' && line[1] == '\n'))
|
||||||
line++;
|
line++;
|
||||||
line += 2;
|
line += 2;
|
||||||
|
@ -534,7 +538,9 @@ ProcessHTTPUnSubscribe_upnphttp(struct upnphttp * h, const char * path)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Parse and process Http Query
|
/* Parse and process Http Query
|
||||||
* called once all the HTTP headers have been received. */
|
* called once all the HTTP headers have been received,
|
||||||
|
* so it is guaranteed that h->req_buf contains the \r\n\r\n
|
||||||
|
* character sequence */
|
||||||
static void
|
static void
|
||||||
ProcessHttpQuery_upnphttp(struct upnphttp * h)
|
ProcessHttpQuery_upnphttp(struct upnphttp * h)
|
||||||
{
|
{
|
||||||
|
@ -567,6 +573,9 @@ ProcessHttpQuery_upnphttp(struct upnphttp * h)
|
||||||
p = h->req_buf;
|
p = h->req_buf;
|
||||||
if(!p)
|
if(!p)
|
||||||
return;
|
return;
|
||||||
|
/* note : checking (*p != '\r') is enough to avoid runing off the
|
||||||
|
* end of the buffer, because h->req_buf is guaranteed to contain
|
||||||
|
* the \r\n\r\n character sequence */
|
||||||
for(i = 0; i<15 && *p != ' ' && *p != '\r'; i++)
|
for(i = 0; i<15 && *p != ' ' && *p != '\r'; i++)
|
||||||
HttpCommand[i] = *(p++);
|
HttpCommand[i] = *(p++);
|
||||||
HttpCommand[i] = '\0';
|
HttpCommand[i] = '\0';
|
||||||
|
@ -701,6 +710,8 @@ Process_upnphttp(struct upnphttp * h)
|
||||||
endheaders = findendheaders(h->req_buf, h->req_buflen);
|
endheaders = findendheaders(h->req_buf, h->req_buflen);
|
||||||
if(endheaders)
|
if(endheaders)
|
||||||
{
|
{
|
||||||
|
/* at this point, the request buffer (h->req_buf)
|
||||||
|
* is guaranteed to contain the \r\n\r\n character sequence */
|
||||||
h->req_contentoff = endheaders - h->req_buf + 4;
|
h->req_contentoff = endheaders - h->req_buf + 4;
|
||||||
ProcessHttpQuery_upnphttp(h);
|
ProcessHttpQuery_upnphttp(h);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue