tinywebd
annotate src/http.c @ 2:7bb4c2a0a360
foo
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 15 Apr 2015 23:44:22 +0300 |
parents | f425a9805d17 |
children | 852a745503cf |
rev | line source |
---|---|
nuclear@1 | 1 #include "http.h" |
nuclear@1 | 2 |
nuclear@2 | 3 int http_parse_header(struct http_req_header *hdr, const char *buf, int bufsz) |
nuclear@2 | 4 { |
nuclear@2 | 5 int i, nlines = 0; |
nuclear@2 | 6 char *endhdr; |
nuclear@2 | 7 char *rqline = 0; |
nuclear@2 | 8 |
nuclear@2 | 9 for(i=1; i<bufsz; i++) { |
nuclear@2 | 10 if(buf[i] == '\n' && buf[i - 1] == '\r') { |
nuclear@2 | 11 if(!rqline) { |
nuclear@2 | 12 rqline = alloca(i); |
nuclear@2 | 13 memcpy(rqline, buf, i - 1); |
nuclear@2 | 14 rqline[i - 1] = 0; |
nuclear@2 | 15 } |
nuclear@2 | 16 ++nlines; |
nuclear@2 | 17 } |
nuclear@2 | 18 } |
nuclear@2 | 19 |
nuclear@2 | 20 if(!rqline) |
nuclear@2 | 21 return -1; |
nuclear@2 | 22 |
nuclear@2 | 23 |
nuclear@2 | 24 } |
nuclear@2 | 25 |
nuclear@1 | 26 const char *http_strmsg(int code) |
nuclear@1 | 27 { |
nuclear@1 | 28 static const char **msgxxx[] = { |
nuclear@1 | 29 0, http_msg1xx, http_msg2xx, http_msg3xx, http_msg4xx, http_msg5xx |
nuclear@1 | 30 }; |
nuclear@1 | 31 static int msgcount[] = { |
nuclear@1 | 32 0, |
nuclear@1 | 33 sizeof http_msg1xx / sizeof *http_msg1xx, |
nuclear@1 | 34 sizeof http_msg2xx / sizeof *http_msg2xx, |
nuclear@1 | 35 sizeof http_msg3xx / sizeof *http_msg3xx, |
nuclear@1 | 36 sizeof http_msg4xx / sizeof *http_msg4xx, |
nuclear@1 | 37 sizeof http_msg5xx / sizeof *http_msg5xx |
nuclear@1 | 38 }; |
nuclear@1 | 39 |
nuclear@1 | 40 int type = code / 100; |
nuclear@1 | 41 int idx = code % 100; |
nuclear@1 | 42 |
nuclear@1 | 43 if(type < 1 || type >= sizeof msgxxx / sizeof *msgxxx) { |
nuclear@1 | 44 return "Invalid HTTP Status"; |
nuclear@1 | 45 } |
nuclear@1 | 46 |
nuclear@1 | 47 if(idx < 0 || idx >= msgcount[type]) { |
nuclear@1 | 48 return "Unknown HTTP Status"; |
nuclear@1 | 49 } |
nuclear@1 | 50 |
nuclear@1 | 51 return msgxxx[type][idx]; |
nuclear@1 | 52 } |