commit - d4261a58adb6613564784042c8785a3b8567d0f9
commit + 6a6496627c68099fa1c40784751e8ff6c80223ad
blob - 02db192da54f476ed3167e48965a6f6cb9d2af1c
blob + e1d38a2f3d83ce5c8cd0340b3ab0fac990fab979
--- gotwebd/gotweb.c
+++ gotwebd/gotweb.c
return c;
}
-void
+int
gotweb_process_request(struct request *c)
{
const struct got_error *error = NULL;
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 = {
.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",
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);
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) {
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) {
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);
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) {
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);
}
}
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) {
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) {
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) {
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);
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 *
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
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);