mirror of
https://github.com/sudo-project/sudo.git
synced 2025-08-22 01:49:11 +00:00
Relay ChangeWindowSize and CommandSuspend events too.
This commit is contained in:
parent
7c2224584d
commit
3dce67ec10
@ -638,6 +638,11 @@ handle_winsize(ChangeWindowSize *msg, struct connection_closure *closure)
|
||||
debug_return_bool(false);
|
||||
}
|
||||
|
||||
if (closure->relay_closure != NULL) {
|
||||
/* Forward ChangeWindowSize to connected relay. */
|
||||
debug_return_bool(relay_winsize(msg, closure));
|
||||
}
|
||||
|
||||
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: received ChangeWindowSize",
|
||||
__func__);
|
||||
|
||||
@ -670,6 +675,11 @@ handle_suspend(CommandSuspend *msg, struct connection_closure *closure)
|
||||
debug_return_bool(false);
|
||||
}
|
||||
|
||||
if (closure->relay_closure != NULL) {
|
||||
/* Forward CommandSuspend to connected relay. */
|
||||
debug_return_bool(relay_suspend(msg, closure));
|
||||
}
|
||||
|
||||
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: received CommandSuspend",
|
||||
__func__);
|
||||
|
||||
|
@ -193,6 +193,8 @@ bool relay_exit(ExitMessage *msg, struct connection_closure *closure);
|
||||
bool relay_restart(RestartMessage *msg, struct connection_closure *closure);
|
||||
bool relay_alert(AlertMessage *msg, struct connection_closure *closure);
|
||||
bool relay_iobuf(int iofd, IoBuffer *iobuf, struct connection_closure *closure);
|
||||
bool relay_suspend(CommandSuspend *msg, struct connection_closure *closure);
|
||||
bool relay_winsize(ChangeWindowSize *msg, struct connection_closure *closure);
|
||||
bool relay_shutdown(struct connection_closure *closure);
|
||||
|
||||
#endif /* SUDO_LOGSRVD_H */
|
||||
|
@ -1201,6 +1201,68 @@ relay_alert(AlertMessage *msg, struct connection_closure *closure)
|
||||
debug_return_bool(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* Relay a CommandSuspend from the client to the relay server.
|
||||
*/
|
||||
bool
|
||||
relay_suspend(CommandSuspend *msg, struct connection_closure *closure)
|
||||
{
|
||||
struct relay_closure *relay_closure = closure->relay_closure;
|
||||
struct sudo_event_base *evbase = closure->evbase;
|
||||
ClientMessage client_msg = CLIENT_MESSAGE__INIT;
|
||||
bool ret;
|
||||
debug_decl(relay_suspend, SUDO_DEBUG_UTIL);
|
||||
|
||||
sudo_debug_printf(SUDO_DEBUG_INFO,
|
||||
"%s: relaying CommandSuspend from %s to %s (%s)", __func__,
|
||||
closure->ipaddr, relay_closure->relay_name.name,
|
||||
relay_closure->relay_name.ipaddr);
|
||||
|
||||
client_msg.u.suspend_event = msg;
|
||||
client_msg.type_case = CLIENT_MESSAGE__TYPE_SUSPEND_EVENT;
|
||||
ret = fmt_client_message(closure, &client_msg);
|
||||
if (ret) {
|
||||
if (sudo_ev_add(evbase, relay_closure->write_ev, NULL, false) == -1) {
|
||||
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
|
||||
"unable to add server write event");
|
||||
ret = false;
|
||||
}
|
||||
}
|
||||
|
||||
debug_return_bool(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* Relay a ChangeWindowSize from the client to the relay server.
|
||||
*/
|
||||
bool
|
||||
relay_winsize(ChangeWindowSize *msg, struct connection_closure *closure)
|
||||
{
|
||||
struct relay_closure *relay_closure = closure->relay_closure;
|
||||
struct sudo_event_base *evbase = closure->evbase;
|
||||
ClientMessage client_msg = CLIENT_MESSAGE__INIT;
|
||||
bool ret;
|
||||
debug_decl(relay_winsize, SUDO_DEBUG_UTIL);
|
||||
|
||||
sudo_debug_printf(SUDO_DEBUG_INFO,
|
||||
"%s: relaying ChangeWindowSize from %s to %s (%s)", __func__,
|
||||
closure->ipaddr, relay_closure->relay_name.name,
|
||||
relay_closure->relay_name.ipaddr);
|
||||
|
||||
client_msg.u.winsize_event = msg;
|
||||
client_msg.type_case = CLIENT_MESSAGE__TYPE_WINSIZE_EVENT;
|
||||
ret = fmt_client_message(closure, &client_msg);
|
||||
if (ret) {
|
||||
if (sudo_ev_add(evbase, relay_closure->write_ev, NULL, false) == -1) {
|
||||
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
|
||||
"unable to add server write event");
|
||||
ret = false;
|
||||
}
|
||||
}
|
||||
|
||||
debug_return_bool(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* Relay an IoBuffer from the client to the relay server.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user