Download raw body.
don't ignore err in session_dispatch_repo_child()
we could fail handilng the imsg and try to keep going on. spotted by
breaking something else by accident and observing the regress hanging.
ok?
diff -s /home/op/w/got
commit - 53c2bfa8e1d5c3e128dcfcfd90c1a55099168eba
path + /home/op/w/got (staged changes)
blob - a2ef1cc69a5fc843bdf614504cb3e75f03180015
blob + 1d073e97037a9cb64129ca446a58b0f3fe2a2a62
--- gotd/session_write.c
+++ gotd/session_write.c
@@ -889,31 +889,31 @@ session_dispatch_repo_child(int fd, short event, void
case GOTD_IMSG_REF_UPDATE:
err = recv_ref_update(&imsg);
if (err == NULL)
do_ref_update = 1;
break;
case GOTD_IMSG_NOTIFY:
err = recv_notification_content(&imsg);
if (err == NULL)
do_notify = 1;
break;
default:
log_debug("unexpected imsg %d", imsg.hdr.type);
break;
}
- if (do_disconnect) {
+ if (do_disconnect || err) {
if (err)
disconnect_on_error(client, err);
else
disconnect(client);
} else {
struct gotd_session_notif *notif;
if (do_packfile_install)
err = install_pack(client,
gotd_session.repo->path, &imsg);
else if (do_ref_updates)
err = begin_ref_updates(client, &imsg);
else if (do_ref_update)
err = update_ref(&shut, client,
gotd_session.repo->path, &imsg);
don't ignore err in session_dispatch_repo_child()