Commit Diff


commit - ef5d8d39c705b2d3ec3cd7d009fc5d815ee28b75
commit + e49ea032f80f15db7a7534b3ad0f5bfd0aae321c
blob - bc9167c11f07085a6c16b8b189afe0d91b2930f0
blob + fdbcd0891fe736f8ee82c9dc8e62d367feb3032d
--- gotd/gotd.c
+++ gotd/gotd.c
@@ -2173,11 +2173,10 @@ gotd_dispatch_client_session(int fd, short event, void
 				err = got_error(GOT_ERR_PRIVSEP_MSG);
 				break;
 			}
+			err = send_request_timeout(iev, &gotd.request_timeout);
+			if (err)
+				break;
 			if (client_is_writing(client)) {
-				err = send_request_timeout(iev,
-				    &gotd.request_timeout);
-				if (err)
-					break;
 				err = send_notification_config(iev,
 				    proc->repo_name);
 				if (err)
@@ -3036,7 +3035,9 @@ main(int argc, char **argv)
 
 	if (proc_id != GOTD_PROC_LISTEN && proc_id != GOTD_PROC_AUTH &&
 	    proc_id != GOTD_PROC_REPO_WRITE &&
-	    proc_id != GOTD_PROC_SESSION_WRITE && proc_id != GOTD_PROC_NOTIFY) {
+	    proc_id != GOTD_PROC_REPO_READ &&
+	    proc_id != GOTD_PROC_SESSION_WRITE && proc_id != GOTD_PROC_NOTIFY &&
+	    proc_id != GOTD_PROC_SESSION_READ) {
 		if (gotd_parse_config(confpath, proc_id, secrets, &gotd) != 0)
 			return 1;
 
@@ -3212,8 +3213,7 @@ main(int argc, char **argv)
 			err(1, "pledge");
 #endif
 		apply_unveil_repo_readonly(repo_path, 1);
-		session_read_main(title, repo_path, pack_fds, temp_fds,
-		    &gotd.request_timeout);
+		session_read_main(title, repo_path, pack_fds, temp_fds);
 		/* NOTREACHED */
 		break;
 	case GOTD_PROC_SESSION_WRITE:
blob - e08c451332d81d5b63f413d50e4f42ca71f27be7
blob + 799e437da262754f2da049e9adcf164a7718e94f
--- gotd/session_read.c
+++ gotd/session_read.c
@@ -809,6 +809,11 @@ session_dispatch(int fd, short event, void *arg)
 		case GOTD_IMSG_DISCONNECT:
 			do_disconnect = 1;
 			break;
+		case GOTD_IMSG_REQUEST_TIMEOUT:
+			if (imsg_get_data(&imsg, &gotd_session.request_timeout,
+			    sizeof(gotd_session.request_timeout)) == -1)
+				err = got_error_from_errno("imsg_get_data");
+			break;
 		case GOTD_IMSG_CONNECT_REPO_CHILD:
 			err = recv_repo_child(&imsg);
 			if (err)
@@ -844,7 +849,7 @@ done:
 
 void
 session_read_main(const char *title, const char *repo_path,
-    int *pack_fds, int *temp_fds, struct timeval *request_timeout)
+    int *pack_fds, int *temp_fds)
 {
 	const struct got_error *err = NULL;
 	struct event evsigint, evsigterm, evsighup, evsigusr1;
@@ -853,8 +858,8 @@ session_read_main(const char *title, const char *repo_
 	gotd_session.pid = getpid();
 	gotd_session.pack_fds = pack_fds;
 	gotd_session.temp_fds = temp_fds;
-	memcpy(&gotd_session.request_timeout, request_timeout,
-	    sizeof(gotd_session.request_timeout));
+	gotd_session.request_timeout.tv_sec = GOTD_DEFAULT_REQUEST_TIMEOUT;
+	gotd_session.request_timeout.tv_usec = 0;
 	gotd_session.repo_child_packfd = -1;
 
 	if (imsgbuf_init(&gotd_session.notifier_iev.ibuf, -1) == -1) {
blob - 5505ce95744a9ce3f739e8747e99604e4e7380f1
blob + fd0ac0b6caadc07f22574d9c51eb8cc9d76176ea
--- gotd/session_read.h
+++ gotd/session_read.h
@@ -14,5 +14,4 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-void session_read_main(const char *, const char *, int *, int *,
-    struct timeval *);
+void session_read_main(const char *, const char *, int *, int *);