Dolda2000 GitWeb
/
ashd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
9e9eca7
)
Fixed a couple of htparser bugs.
author
Fredrik Tolf
<fredrik@dolda2000.com>
Wed, 17 Dec 2008 02:54:11 +0000
(
03:54
+0100)
committer
Fredrik Tolf
<fredrik@dolda2000.com>
Wed, 17 Dec 2008 02:54:11 +0000
(
03:54
+0100)
src/htparser.c
patch
|
blob
|
blame
|
history
diff --git
a/src/htparser.c
b/src/htparser.c
index
c0aca2e
..
184e7b9
100644
(file)
--- a/
src/htparser.c
+++ b/
src/htparser.c
@@
-296,7
+296,7
@@
static off_t passdata(int src, int dst, struct charbuf *buf, off_t max)
sent = 0;
eof = 0;
sent = 0;
eof = 0;
- while(
!eof || (buf->d > 0
)) {
+ while(
(!eof || (buf->d > 0)) && ((max < 0) || (sent < max)
)) {
if(!eof && (buf->d < buf->s) && ((max < 0) || (sent + buf->d < max))) {
while(1) {
ret = recv(src, buf->b + buf->d, buf->s - buf->d, MSG_DONTWAIT);
if(!eof && (buf->d < buf->s) && ((max < 0) || (sent + buf->d < max))) {
while(1) {
ret = recv(src, buf->b + buf->d, buf->s - buf->d, MSG_DONTWAIT);
@@
-343,7
+343,7
@@
static void serve(struct muth *muth, va_list args)
struct charbuf inbuf, outbuf;
struct hthead *req, *resp;
off_t dlen, sent;
struct charbuf inbuf, outbuf;
struct hthead *req, *resp;
off_t dlen, sent;
- size_t headoff;
+ s
s
ize_t headoff;
char nmbuf[256];
bufinit(inbuf);
char nmbuf[256];
bufinit(inbuf);
@@
-395,6
+395,8
@@
static void serve(struct muth *muth, va_list args)
if(dlen > 0)
passdata(fd, cfd, &inbuf, dlen);
}
if(dlen > 0)
passdata(fd, cfd, &inbuf, dlen);
}
+ /* Make sure to send EOF */
+ shutdown(cfd, SHUT_WR);
/*
* Find and decode the response header:
/*
* Find and decode the response header: