info: automatically detect whether the reply should have HTTP headers
authorFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 7 Feb 2017 12:28:06 +0000 (13:28 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 7 Feb 2017 12:32:56 +0000 (13:32 +0100)
This is the case when a HTTP request is done.
The request can still override whether or not HTTP headers are sent
by employing the 'http' and 'plain' request prefixes.

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/info/olsrd_info.c

index 81dc034..702bddf 100644 (file)
@@ -636,7 +636,7 @@ static char * cutAtFirstEOL(char * requ, size_t *len) {
   return requ;
 }
 
-static char * parseRequest(char * req, size_t *len) {
+static char * parseRequest(char * req, size_t *len, bool *add_headers) {
   if (!req || !len || !*len) {
     return req;
   }
@@ -649,6 +649,7 @@ static char * parseRequest(char * req, size_t *len) {
       || strncasecmp(&req[*len - 8], "HTTP/1.", 7) //
       || ((req[*len - 1] != '1') && (req[*len - 1] != '0'))) {
     /* too short or does not start with 'GET ' nor ends with ' HTTP/1.[01]'*/
+    *add_headers = false;
     return req;
   }
 
@@ -660,6 +661,8 @@ static char * parseRequest(char * req, size_t *len) {
   *len = *len - 9;
   req[*len] = '\0';
 
+  *add_headers = true;
+
   return req;
 }
 
@@ -838,7 +841,7 @@ static void ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int
     req = skipLeadingWhitespace(req, (size_t*) &rx_count);
 
     /* detect http requests */
-    req = parseRequest(req, (size_t*) &rx_count);
+    req = parseRequest(req, (size_t*) &rx_count, &add_headers);
 
     req = stripTrailingWhitespace(req, (size_t*) &rx_count);
     req = stripTrailingSlashes(req, (size_t*) &rx_count);