From 2bd232c982f1978d71363d25973a7af82a71c8ef Mon Sep 17 00:00:00 2001 From: Nicolas Viennot Date: Sat, 5 Oct 2019 04:11:32 -0400 Subject: [PATCH] Avoid disconnection warning if fin packet is received --- tmate-daemon-decoder.c | 1 + tmate-websocket.c | 10 +++++++++- tmate.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/tmate-daemon-decoder.c b/tmate-daemon-decoder.c index 3b2a63d3..c984b710 100644 --- a/tmate-daemon-decoder.c +++ b/tmate-daemon-decoder.c @@ -404,6 +404,7 @@ static void tmate_write_copy_mode(__unused struct tmate_session *session, static void tmate_fin(__unused struct tmate_session *session, __unused struct tmate_unpacker *uk) { + session->fin_received = true; request_server_termination(); } diff --git a/tmate-websocket.c b/tmate-websocket.c index 259d3025..26d61fbf 100644 --- a/tmate-websocket.c +++ b/tmate-websocket.c @@ -342,8 +342,16 @@ static void on_websocket_encoder_write(void *userdata, struct evbuffer *buffer) static void on_websocket_event_default(__unused struct tmate_session *session, short events) { - if (events & BEV_EVENT_EOF) + if (events & BEV_EVENT_EOF) { + if (session->fin_received) { + /* + * This is expected. The websocket will close the + * connection upon receiving the fin message. + */ + exit(0); + } tmate_fatal("Connection to websocket server closed"); + } if (events & BEV_EVENT_ERROR) tmate_fatal("Connection to websocket server error: %s", diff --git a/tmate.h b/tmate.h index 6284b0c8..6e1b9761 100644 --- a/tmate.h +++ b/tmate.h @@ -246,6 +246,7 @@ struct tmate_session { const char *client_version; int client_protocol_version; struct event ev_notify_timer; + bool fin_received; int websocket_fd; struct bufferevent *bev_websocket;