X-Git-Url: http://www.dolda2000.com/gitweb/?p=ashd.git;a=blobdiff_plain;f=src%2Fhtparser.c;h=9f02adea02fe44c7463fc22d9709229fc7f5ea87;hp=cec52dc3984d56488ee4fab84540993a1dd33fff;hb=f9255ddd4966787957cb8eb676155d99883d7955;hpb=a701d7b797668c33d90c6410331cd7b599f62830 diff --git a/src/htparser.c b/src/htparser.c index cec52dc..9f02ade 100644 --- a/src/htparser.c +++ b/src/htparser.c @@ -213,7 +213,7 @@ static off_t passdata(FILE *in, FILE *out, off_t max) char buf[8192]; total = 0; - while(!feof(in) && (total < max)) { + while(!feof(in) && ((max < 0) || (total < max))) { read = sizeof(buf); if(max >= 0) read = min(max - total, read); @@ -236,7 +236,7 @@ static int passchunks(FILE *in, FILE *out) read = fread(buf, 1, sizeof(buf), in); if(ferror(in)) return(-1); - fprintf(out, "%x\r\n", read); + fprintf(out, "%zx\r\n", read); if(fwrite(buf, 1, read, out) != read) return(-1); fprintf(out, "\r\n"); @@ -305,7 +305,8 @@ static void serve(struct muth *muth, va_list args) /* Make sure to send EOF */ shutdown(pfds[1], SHUT_WR); - resp = parseresp(out); + if((resp = parseresp(out)) == NULL) + break; replstr(&resp->ver, req->ver); if(!strcmp(req->ver, "HTTP/1.0")) {