diff --git a/src/syncterm/rlogin.c b/src/syncterm/rlogin.c index e309b1eae87742f45d53e78f306cb1b7972ab181..68fac9651770be38926ac702e57053d2da698558 100644 --- a/src/syncterm/rlogin.c +++ b/src/syncterm/rlogin.c @@ -212,11 +212,12 @@ int rlogin_close(void) char garbage[1024]; conn_api.terminate=1; - closesocket(rlogin_sock); + shutdown(rlogin_sock, SHUT_RDWR); while(conn_api.input_thread_running == 1 || conn_api.output_thread_running == 1) { conn_recv_upto(garbage, sizeof(garbage), 0); SLEEP(1); } + closesocket(rlogin_sock); destroy_conn_buf(&conn_inbuf); destroy_conn_buf(&conn_outbuf); FREE_AND_NULL(conn_api.rd_buf); diff --git a/src/syncterm/ssh.c b/src/syncterm/ssh.c index 0b45edaac5ecb2c67fa09a37f663e3352256d986..c9e46c390def9842ad4d829e0ffe1f5d1eacdfa7 100644 --- a/src/syncterm/ssh.c +++ b/src/syncterm/ssh.c @@ -355,6 +355,7 @@ int ssh_close(void) SLEEP(1); } cl.DestroySession(ssh_session); + shutdown(SHUT_RDWR, ssh_sock); closesocket(ssh_sock); ssh_sock=INVALID_SOCKET; destroy_conn_buf(&conn_inbuf);