mirror of
https://github.com/sudo-project/sudo.git
synced 2025-08-28 12:57:50 +00:00
On error, remove the connection with an error without freeing the closure.
Fixes the final message at the end when there is a network error.
This commit is contained in:
parent
2b1e986572
commit
aba4915b83
@ -1239,8 +1239,7 @@ server_msg_cb(int fd, int what, void *v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (what == SUDO_EV_TIMEOUT) {
|
if (what == SUDO_EV_TIMEOUT) {
|
||||||
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
|
sudo_warnx(U_("timeout reading from server"));
|
||||||
"Reading from server timed out");
|
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1330,8 +1329,7 @@ server_msg_cb(int fd, int what, void *v)
|
|||||||
buf->off = 0;
|
buf->off = 0;
|
||||||
debug_return;
|
debug_return;
|
||||||
bad:
|
bad:
|
||||||
close(fd);
|
sudo_ev_del(closure->evbase, closure->read_ev);
|
||||||
client_closure_free(closure);
|
|
||||||
debug_return;
|
debug_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1359,8 +1357,7 @@ client_msg_cb(int fd, int what, void *v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (what == SUDO_EV_TIMEOUT) {
|
if (what == SUDO_EV_TIMEOUT) {
|
||||||
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
|
sudo_warnx(U_("timeout writing to server"));
|
||||||
"Writing to server timed out");
|
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1413,8 +1410,7 @@ client_msg_cb(int fd, int what, void *v)
|
|||||||
debug_return;
|
debug_return;
|
||||||
|
|
||||||
bad:
|
bad:
|
||||||
close(fd);
|
sudo_ev_del(closure->evbase, closure->read_ev);
|
||||||
client_closure_free(closure);
|
|
||||||
debug_return;
|
debug_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1488,7 +1484,7 @@ main(int argc, char *argv[])
|
|||||||
const char *iolog_id = NULL;
|
const char *iolog_id = NULL;
|
||||||
const char *open_mode = "r";
|
const char *open_mode = "r";
|
||||||
const char *errstr;
|
const char *errstr;
|
||||||
int ch, sock, iolog_dir_fd;
|
int ch, sock, iolog_dir_fd, finished;
|
||||||
debug_decl_vars(main, SUDO_DEBUG_MAIN);
|
debug_decl_vars(main, SUDO_DEBUG_MAIN);
|
||||||
|
|
||||||
#if defined(SUDO_DEVEL) && defined(__OpenBSD__)
|
#if defined(SUDO_DEVEL) && defined(__OpenBSD__)
|
||||||
@ -1631,22 +1627,27 @@ main(int argc, char *argv[])
|
|||||||
sudo_gettime_real(&t_end);
|
sudo_gettime_real(&t_end);
|
||||||
sudo_timespecsub(&t_end, &t_start, &t_result);
|
sudo_timespecsub(&t_end, &t_start, &t_result);
|
||||||
|
|
||||||
TAILQ_FOREACH(closure, &connections, entries) {
|
finished = 0;
|
||||||
if (closure->state != FINISHED) {
|
while ((closure = TAILQ_FIRST(&connections)) != NULL) {
|
||||||
sudo_warnx(U_("exited prematurely with state %d"), closure->state);
|
if (closure->state == FINISHED) {
|
||||||
sudo_warnx(U_("elapsed time sent to server [%lld, %ld]"),
|
finished++;
|
||||||
(long long)closure->elapsed.tv_sec, closure->elapsed.tv_nsec);
|
} else {
|
||||||
sudo_warnx(U_("commit point received from server [%lld, %ld]"),
|
sudo_warnx(U_("exited prematurely with state %d"), closure->state);
|
||||||
(long long)closure->committed.tv_sec, closure->committed.tv_nsec);
|
sudo_warnx(U_("elapsed time sent to server [%lld, %ld]"),
|
||||||
goto bad;
|
(long long)closure->elapsed.tv_sec, closure->elapsed.tv_nsec);
|
||||||
|
sudo_warnx(U_("commit point received from server [%lld, %ld]"),
|
||||||
|
(long long)closure->committed.tv_sec, closure->committed.tv_nsec);
|
||||||
}
|
}
|
||||||
|
client_closure_free(closure);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (finished != 0) {
|
||||||
|
printf("%d I/O log%s transmitted successfully in %lld.%.9ld seconds\n",
|
||||||
|
finished, nr_of_conns > 1 ? "s" : "",
|
||||||
|
(long long)t_result.tv_sec, t_result.tv_nsec);
|
||||||
|
debug_return_int(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("I/O log%s transmitted successfully in %lld.%.9ld seconds\n",
|
|
||||||
nr_of_conns > 1 ? "s":"",
|
|
||||||
(long long)t_result.tv_sec, t_result.tv_nsec);
|
|
||||||
|
|
||||||
debug_return_int(EXIT_SUCCESS);
|
|
||||||
bad:
|
bad:
|
||||||
debug_return_int(EXIT_FAILURE);
|
debug_return_int(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -1475,7 +1475,7 @@ client_msg_cb(int fd, int what, void *v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (what == SUDO_PLUGIN_EV_TIMEOUT) {
|
if (what == SUDO_PLUGIN_EV_TIMEOUT) {
|
||||||
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: timed out writiing to server",
|
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: timed out writing to server",
|
||||||
__func__);
|
__func__);
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user