diff --git a/src/libhttpd/gethead.c b/src/libhttpd/gethead.c
index 5983345..0677cc8 100644
--- a/src/libhttpd/gethead.c
+++ b/src/libhttpd/gethead.c
@@ -15,15 +15,11 @@
 	int n;
 
 	hin = &c->hin;
-fprint(2, "hgethead top %p - %p\n", hin->pos, hin->stop);
 	for(;;){
 		s = (char*)hin->pos;
 		pp = s;
-fprint(2, "hgethead %p - %p\n", pp, hin->stop);
 		while(p = memchr(pp, '\n', (char*)hin->stop - pp)){
-fprint(2, "hgethead %p - %p newline at %p %d\n", pp, hin->stop, p, *pp);
 			if(!many || p == pp || (p == pp + 1 && *pp == '\r')){
-fprint(2, "breaking\n");
 				pp = p + 1;
 				break;
 			}
@@ -32,14 +28,13 @@
 		hin->pos = (uchar*)pp;
 		n = pp - s;
 		if(c->hstop + n > &c->header[HBufSize])
-			return 0;
+			return -1;
 		memmove(c->hstop, s, n);
 		c->hstop += n;
 		*c->hstop = '\0';
-fprint(2, "p %p\n", p);
 		if(p != nil)
-			return 1;
-		if(hreadbuf(hin, hin->pos) == nil || hin->state == Hend)
 			return 0;
+		if(hreadbuf(hin, hin->pos) == nil || hin->state == Hend)
+			return -1;
 	}
 }
diff --git a/src/libhttpd/hio.c b/src/libhttpd/hio.c
index 34d3a3a..3561b68 100644
--- a/src/libhttpd/hio.c
+++ b/src/libhttpd/hio.c
@@ -281,7 +281,7 @@
 
 	s = strchr(hstates, buf[0]);
 	if(s == nil)
-		return 0;
+		return -1;
 	h->state = s - hstates;
 
 	s = strchr(hxfers, buf[1]);
@@ -300,13 +300,13 @@
 		}
 		*t++ = c;
 		if(t >= stop)
-			return 0;
+			return -1;
 	}
 	*t = '\0';
 	h->pos = h->start;
 	h->stop = t;
 	h->seek = 0;
-	return 1;
+	return 0;
 }
 
 void
diff --git a/src/libhttpd/parse.c b/src/libhttpd/parse.c
index 5fd4092..8e8364b 100644
--- a/src/libhttpd/parse.c
+++ b/src/libhttpd/parse.c
@@ -198,7 +198,7 @@
 	memset(&h, 0, sizeof(h));
 	h.c = c;
 	alarm(timeout);
-	if(!hgethead(c, 1))
+	if(hgethead(c, 1) < 0)
 		return -1;
 	alarm(0);
 	h.hstart = c->hpos;
diff --git a/src/libhttpd/parsereq.c b/src/libhttpd/parsereq.c
index 7ef6341..9423798 100644
--- a/src/libhttpd/parsereq.c
+++ b/src/libhttpd/parsereq.c
@@ -41,8 +41,8 @@
 	 * only works for http/1.1 or later.
 	 */
 	alarm(timeout);
-	if(!hgethead(c, 0))
-		return 0;
+	if(hgethead(c, 0) < 0)
+		return -1;
 	alarm(0);
 	c->reqtime = time(nil);
 	c->req.meth = getword(c);
