Commit 1af8b32fdf1588b2533eb311d1c36b1d2398902b
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
Showing
3 changed files
with
19 additions
and
18 deletions
@@ -27,7 +27,7 @@ | @@ -27,7 +27,7 @@ | ||
27 | void | 27 | void |
28 | cbufSkipNonAlpha(Cbuf this) | 28 | cbufSkipNonAlpha(Cbuf this) |
29 | { | 29 | { |
30 | - while(0 > this->bused && isalpha(*cbufGetRead(this))) | 30 | + while(0 < this->bused && !isalpha(*cbufGetRead(this))) |
31 | cbufIncRead(this, 1); | 31 | cbufIncRead(this, 1); |
32 | } | 32 | } |
33 | 33 |
@@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
28 | #include "http/parser.h" | 28 | #include "http/parser.h" |
29 | #include "cbuf.h" | 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 | size_t | 33 | size_t |
34 | httpParserBody(HttpParser this, const char * buf, size_t nbuf) | 34 | httpParserBody(HttpParser this, const char * buf, size_t nbuf) |
@@ -37,7 +37,7 @@ httpParserBody(HttpParser this, const char * buf, size_t nbuf) | @@ -37,7 +37,7 @@ httpParserBody(HttpParser this, const char * buf, size_t nbuf) | ||
37 | HttpMessage current = this->current; | 37 | HttpMessage current = this->current; |
38 | 38 | ||
39 | if (current->dbody < current->nbody) { | 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 | memcpy(current->body, buf, len); | 42 | memcpy(current->body, buf, len); |
43 | 43 |
@@ -120,23 +120,24 @@ httpParserParse(void * _this, Stream st) | @@ -120,23 +120,24 @@ httpParserParse(void * _this, Stream st) | ||
120 | break; | 120 | break; |
121 | 121 | ||
122 | case HTTP_MESSAGE_HEADERS_DONE: | 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 | break; | 141 | break; |
141 | 142 | ||
142 | case HTTP_MESSAGE_DONE: | 143 | case HTTP_MESSAGE_DONE: |
Please
register
or
login
to post a comment