Commit Diff


commit - b4c3daf29228ba34049b469d257f9a6fe837c40d
commit + 5c7de8d810a3bd53d60b112f1b936be2d77ff881
blob - 4fafd4fdf6a4cfd83ad061c3f5b3d866c2dc8e9c
blob + 3d4a0a1751eb667bbed517a2cc617aca8ab21ff6
--- relay_http.c
+++ relay_http.c
@@ -647,8 +647,10 @@ relay_read_httpcontent(struct bufferevent *bev, void *
 		cre->toread = TOREAD_HTTP_HEADER;
 		bev->readcb = relay_read_http;
 	}
-	if (con->se_done)
-		goto done;
+	if (con->se_done) {
+		relay_close(con, "last http content read", 0);
+		return;
+	}
 	bufferevent_enable(bev, EV_READ);
 
 	if (cre->dst->bev && EVBUFFER_LENGTH(EVBUFFER_OUTPUT(cre->dst->bev)) >
@@ -659,9 +661,6 @@ relay_read_httpcontent(struct bufferevent *bev, void *
 		bev->readcb(bev, arg);
 	/* The callback readcb() might have freed the session. */
 	return;
- done:
-	relay_close(con, "last http content read", 0);
-	return;
  fail:
 	relay_close(con, strerror(errno), 1);
 }
@@ -779,8 +778,10 @@ relay_read_httpchunks(struct bufferevent *bev, void *a
 	}
 
  next:
-	if (con->se_done)
-		goto done;
+	if (con->se_done) {
+		relay_close(con, "last http chunk read (done)", 0);
+		return;
+	}
 	bufferevent_enable(bev, EV_READ);
 
 	if (cre->dst->bev && EVBUFFER_LENGTH(EVBUFFER_OUTPUT(cre->dst->bev)) >
@@ -791,10 +792,6 @@ relay_read_httpchunks(struct bufferevent *bev, void *a
 		bev->readcb(bev, arg);
 	/* The callback readcb() might have freed the session. */
 	return;
-
- done:
-	relay_close(con, "last http chunk read (done)", 0);
-	return;
  fail:
 	relay_close(con, strerror(errno), 1);
 }