summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Viennot <nicolas@viennot.biz>2016-03-28 23:29:49 -0400
committerNicolas Viennot <nicolas@viennot.biz>2016-03-28 23:30:07 -0400
commitc9813a8c4249f930750ee4793e0972db43048d2c (patch)
treea10d54507571103a586a063556c10935225cab84
parent46a29037d43c774c07c1160994b15bb1a64c20a7 (diff)
Provide better reconnection error message
-rw-r--r--tmate-session.c7
-rw-r--r--tmate-ssh-client.c6
-rw-r--r--tmate.h2
3 files changed, 10 insertions, 5 deletions
diff --git a/tmate-session.c b/tmate-session.c
index 6c9fea69..b43a261b 100644
--- a/tmate-session.c
+++ b/tmate-session.c
@@ -157,7 +157,7 @@ static void on_reconnect_retry(__unused evutil_socket_t fd, __unused short what,
}
}
-void tmate_reconnect_session(struct tmate_session *session)
+void tmate_reconnect_session(struct tmate_session *session, const char *message)
{
/*
* We no longer have an SSH connection. Time to reconnect.
@@ -171,7 +171,10 @@ void tmate_reconnect_session(struct tmate_session *session)
on_reconnect_retry, session);
evtimer_add(&session->ev_connection_retry, &tv);
- tmate_status_message("Reconnecting...");
+ if (message)
+ tmate_status_message("Reconnecting... (%s)", message);
+ else
+ tmate_status_message("Reconnecting...");
/*
* This says that we'll need to send a snapshot of the current state.
diff --git a/tmate-ssh-client.c b/tmate-ssh-client.c
index 6a351483..7495d584 100644
--- a/tmate-ssh-client.c
+++ b/tmate-ssh-client.c
@@ -395,14 +395,16 @@ static void kill_ssh_client(struct tmate_ssh_client *client,
{
bool last_client;
va_list ap;
+ char *message = NULL;
TAILQ_REMOVE(&client->tmate_session->clients, client, node);
last_client = TAILQ_EMPTY(&client->tmate_session->clients);
if (fmt && last_client) {
va_start(ap, fmt);
- __tmate_status_message(fmt, ap);
+ xvasprintf(&message, fmt, ap);
va_end(ap);
+ tmate_status_message("%s", message);
}
tmate_debug("SSH client killed (%s)", client->server_ip);
@@ -429,7 +431,7 @@ static void kill_ssh_client(struct tmate_ssh_client *client,
}
if (last_client)
- tmate_reconnect_session(client->tmate_session);
+ tmate_reconnect_session(client->tmate_session, message);
free(client->server_ip);
free(client);
diff --git a/tmate.h b/tmate.h
index fb764c54..f096a35c 100644
--- a/tmate.h
+++ b/tmate.h
@@ -195,7 +195,7 @@ struct tmate_session {
extern struct tmate_session tmate_session;
extern void tmate_session_init(struct event_base *base);
extern void tmate_session_start(void);
-extern void tmate_reconnect_session(struct tmate_session *session);
+extern void tmate_reconnect_session(struct tmate_session *session, const char *message);
/* tmate-debug.c */
extern void tmate_print_stack_trace(void);