Download raw body.
don't ignore err in session_dispatch_repo_child()
On Tue, Apr 16, 2024 at 11:26:12AM +0200, Omar Polo wrote:
> 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?
yes, thanks!
> 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()