Commit Diff


commit - d4261a58adb6613564784042c8785a3b8567d0f9
commit + 6a6496627c68099fa1c40784751e8ff6c80223ad
blob - 02db192da54f476ed3167e48965a6f6cb9d2af1c
blob + e1d38a2f3d83ce5c8cd0340b3ab0fac990fab979
--- gotwebd/gotweb.c
+++ gotwebd/gotweb.c
@@ -256,7 +256,7 @@ recv_request(struct imsg *imsg)
 	return c;
 }
 
-void
+int
 gotweb_process_request(struct request *c)
 {
 	const struct got_error *error = NULL;
@@ -369,9 +369,8 @@ gotweb_process_request(struct request *c)
 			goto err;
 		}
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_blame);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_blame);
 	case BLOB:
 		if (binary) {
 			struct gotweb_url url = {
@@ -383,14 +382,12 @@ gotweb_process_request(struct request *c)
 				.file = qs->file,
 			};
 
-			gotweb_reply(c, 302, NULL, &url);
-			return;
+			return gotweb_reply(c, 302, NULL, &url);
 		}
 
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_blob);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_blob);
 	case BLOBRAW:
 		if (binary)
 			r = gotweb_reply_file(c, "application/octet-stream",
@@ -398,9 +395,9 @@ gotweb_process_request(struct request *c)
 		else
 			r = gotweb_reply(c, 200, "text/plain", NULL);
 		if (r == -1)
-			return;
+			return -1;
 		if (template_flush(c->tp) == -1)
-			return;
+			return -1;
 
 		for (;;) {
 			error = got_object_blob_read_block(&len, c->t->blob);
@@ -410,17 +407,16 @@ gotweb_process_request(struct request *c)
 				break;
 			buf = got_object_blob_get_read_buf(c->t->blob);
 			if (fcgi_write(c, buf, len) == -1)
-				break;
+				return -1;
 		}
-		return;
+		return 0;
 	case BRIEFS:
 		error = got_get_repo_commits(c, srv->max_commits_display);
 		if (error)
 			goto err;
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_briefs);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_briefs);
 	case COMMITS:
 		error = got_get_repo_commits(c, srv->max_commits_display);
 		if (error) {
@@ -428,9 +424,8 @@ gotweb_process_request(struct request *c)
 			goto err;
 		}
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_commits);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_commits);
 	case DIFF:
 		error = got_get_repo_commits(c, 1);
 		if (error) {
@@ -443,9 +438,8 @@ gotweb_process_request(struct request *c)
 			goto err;
 		}
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_diff);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_diff);
 	case INDEX:
 		c->t->nrepos = scandir(srv->repos_path, &c->t->repos, NULL,
 		    alphasort);
@@ -456,9 +450,8 @@ gotweb_process_request(struct request *c)
 			goto err;
 		}
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_index);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_index);
 	case PATCH:
 		error = got_get_repo_commits(c, 1);
 		if (error) {
@@ -471,18 +464,16 @@ gotweb_process_request(struct request *c)
 			goto err;
 		}
 		if (gotweb_reply(c, 200, "text/plain", NULL) == -1)
-			return;
-		gotweb_render_patch(c->tp);
-		return;
+			return -1;
+		return gotweb_render_patch(c->tp);
 	case RSS:
 		error = got_get_repo_tags(c, D_MAXSLCOMMDISP);
 		if (error)
 			goto err;
 		if (gotweb_reply_file(c, rss_ctype, repo_dir->name, ".rss")
 		    == -1)
-			return;
-		gotweb_render_rss(c->tp);
-		return;
+			return -1;
+		return gotweb_render_rss(c->tp);
 	case SUMMARY:
 		error = got_ref_list(&c->t->refs, c->t->repo, "refs/heads",
 		    got_ref_cmp_by_name, NULL);
@@ -512,9 +503,8 @@ gotweb_process_request(struct request *c)
 			}
 		}
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_summary);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_summary);
 	case TAG:
 		error = got_get_repo_tags(c, 1);
 		if (error) {
@@ -527,9 +517,8 @@ gotweb_process_request(struct request *c)
 			goto err;
 		}
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_tag);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_tag);
 	case TAGS:
 		error = got_get_repo_tags(c, srv->max_commits_display);
 		if (error) {
@@ -537,9 +526,8 @@ gotweb_process_request(struct request *c)
 			goto err;
 		}
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_tags);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_tags);
 	case TREE:
 		error = got_get_repo_commits(c, 1);
 		if (error) {
@@ -547,9 +535,8 @@ gotweb_process_request(struct request *c)
 			goto err;
 		}
 		if (gotweb_reply(c, 200, "text/html", NULL) == -1)
-			return;
-		gotweb_render_page(c->tp, gotweb_render_tree);
-		return;
+			return -1;
+		return gotweb_render_page(c->tp, gotweb_render_tree);
 	case ERR:
 	default:
 		error = got_error(GOT_ERR_BAD_QUERYSTRING);
@@ -558,8 +545,8 @@ gotweb_process_request(struct request *c)
 err:
 	c->t->error = error;
 	if (gotweb_reply(c, 400, "text/html", NULL) == -1)
-		return;
-	gotweb_render_page(c->tp, gotweb_render_error);
+		return -1;
+	return gotweb_render_page(c->tp, gotweb_render_error);
 }
 
 struct server *
@@ -1507,8 +1494,15 @@ gotweb_dispatch_server(int fd, short event, void *arg)
 			c = recv_request(&imsg);
 			if (c) {
 				int request_id = c->request_id;
-				gotweb_process_request(c);
-				template_flush(c->tp);
+				if (gotweb_process_request(c) == -1) {
+					log_warnx("request %u failed",
+					    request_id);
+				 } else {
+					if (template_flush(c->tp) == -1) {
+						log_warn("request %u flush",
+						    request_id);
+					}
+				}
 				free_request(c);
 				send_request_done(iev, request_id);
 			}
blob - 162669e54b0d2cd54061611b7096173f4479eb6d
blob + 72ffa40edb56b983084fef786f25489677aa63ff
--- gotwebd/gotwebd.h
+++ gotwebd/gotwebd.h
@@ -478,7 +478,7 @@ int gotweb_render_url(struct request *, struct gotweb_
 int gotweb_render_absolute_url(struct request *, struct gotweb_url *);
 void gotweb_free_repo_commit(struct repo_commit *);
 void gotweb_free_repo_tag(struct repo_tag *);
-void gotweb_process_request(struct request *);
+int gotweb_process_request(struct request *);
 void gotweb_free_transport(struct transport *);
 void gotweb(struct gotwebd *, int);