Commit 1af8b32fdf1588b2533eb311d1c36b1d2398902b

Authored by Georg Hopp
1 parent f1215c67

Some fixes:

- skipNonAlpha now really skips NON alpha chars
- parserBody now reads the MIN of want to what's available
- changed the order in body read...an 0 nbody leads to immediate
  completion, than the first check is if the buffer is empty and only if
  it's not data is read. fixes #20
... ... @@ -27,7 +27,7 @@
27 27 void
28 28 cbufSkipNonAlpha(Cbuf this)
29 29 {
30   - while(0 > this->bused && isalpha(*cbufGetRead(this)))
  30 + while(0 < this->bused && !isalpha(*cbufGetRead(this)))
31 31 cbufIncRead(this, 1);
32 32 }
33 33
... ...
... ... @@ -28,7 +28,7 @@
28 28 #include "http/parser.h"
29 29 #include "cbuf.h"
30 30
31   -#define MAX(a,b) (((a) > (b))? (a) : (b))
  31 +#define MIN(a,b) (((a) < (b))? (a) : (b))
32 32
33 33 size_t
34 34 httpParserBody(HttpParser this, const char * buf, size_t nbuf)
... ... @@ -37,7 +37,7 @@ httpParserBody(HttpParser this, const char * buf, size_t nbuf)
37 37 HttpMessage current = this->current;
38 38
39 39 if (current->dbody < current->nbody) {
40   - len = MAX(current->nbody - current->dbody, nbuf);
  40 + len = MIN(current->nbody - current->dbody, nbuf);
41 41
42 42 memcpy(current->body, buf, len);
43 43
... ...
... ... @@ -120,23 +120,24 @@ httpParserParse(void * _this, Stream st)
120 120 break;
121 121
122 122 case HTTP_MESSAGE_HEADERS_DONE:
123   - {
124   - cbufIncRead(
125   - this->buffer,
126   - httpParserBody(
127   - this,
128   - cbufGetRead(this->buffer),
129   - this->buffer->bused));
130   -
131   - if (cbufIsEmpty(this->buffer)) {
132   - cbufRelease(this->buffer);
133   - this->ourLock = FALSE;
134   - }
  123 + if (this->current->dbody == this->current->nbody) {
  124 + this->state = HTTP_MESSAGE_DONE;
  125 + break;
  126 + }
135 127
136   - if (this->current->dbody == this->current->nbody) {
137   - this->state = HTTP_MESSAGE_DONE;
138   - }
  128 + if (cbufIsEmpty(this->buffer)) {
  129 + cbufRelease(this->buffer);
  130 + this->ourLock = FALSE;
  131 + cont = 0;
  132 + break;
139 133 }
  134 +
  135 + cbufIncRead(
  136 + this->buffer,
  137 + httpParserBody(
  138 + this,
  139 + cbufGetRead(this->buffer),
  140 + this->buffer->bused));
140 141 break;
141 142
142 143 case HTTP_MESSAGE_DONE:
... ...
Please register or login to post a comment