Download raw body.
fix gotd authentication timeout
While running tests with a gotd auth process that was crashing due to a missing pledge promise, I found that the timeout upon authentication process failure was much longer than intended. The authentication timeout was accidentally overriden by the request timeout. Fix this and set both timeouts in the same place for clarity. diff 5e25db14db9eb20ee11b68048b45b3e0f54d50eb 33223026dc355d2180b79d22cbd06044ee342411 commit - 5e25db14db9eb20ee11b68048b45b3e0f54d50eb commit + 33223026dc355d2180b79d22cbd06044ee342411 blob - 2ae681053c360d76a04ee62d816fbcb536e57c4b blob + 4e693a39b4414ee735aa6d7f2649143c79ce3a88 --- gotd/gotd.c +++ gotd/gotd.c @@ -94,6 +94,7 @@ static struct gotd gotd; static SIPHASH_KEY clients_hash_key; volatile int client_cnt; static struct timeval timeout = { 3600, 0 }; +static struct timeval auth_timeout = { 5, 0 }; static struct gotd gotd; void gotd_sighdlr(int sig, short event, void *arg); @@ -1200,7 +1201,10 @@ gotd_request(int fd, short events, void *arg) disconnect_on_error(client, err); } else { gotd_imsg_event_add(&client->iev); - evtimer_add(&client->tmo, &timeout); + if (client->state == GOTD_STATE_EXPECT_LIST_REFS) + evtimer_add(&client->tmo, &auth_timeout); + else + evtimer_add(&client->tmo, &timeout); } } @@ -2306,7 +2310,6 @@ start_auth_child(struct gotd_client *client, int requi { struct gotd_child_proc *proc; struct gotd_imsg_auth iauth; - struct timeval auth_timeout = { 5, 0 }; memset(&iauth, 0, sizeof(iauth)); @@ -2348,7 +2351,6 @@ start_auth_child(struct gotd_client *client, int requi client->auth = proc; client->required_auth = required_auth; - evtimer_add(&client->tmo, &auth_timeout); return NULL; }
fix gotd authentication timeout