From d70919fb0032cfec09df7f99b362c904e5a319b3 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 2 May 2023 11:25:49 +0000 Subject: [PATCH] example, test_ssh2: shutdown socket before close Syncing them with `tests/session_fixture.c`. Cherry-picked from #1017 --- example/direct_tcpip.c | 3 +++ example/scp.c | 1 + example/scp_nonblock.c | 1 + example/scp_write.c | 1 + example/scp_write_nonblock.c | 1 + example/sftp.c | 1 + example/sftp_RW_nonblock.c | 1 + example/sftp_append.c | 1 + example/sftp_mkdir.c | 1 + example/sftp_mkdir_nonblock.c | 1 + example/sftp_nonblock.c | 1 + example/sftp_write.c | 1 + example/sftp_write_nonblock.c | 1 + example/sftp_write_sliding.c | 1 + example/sftpdir.c | 1 + example/sftpdir_nonblock.c | 1 + example/ssh2.c | 1 + example/ssh2_agent.c | 1 + example/ssh2_agent_forwarding.c | 1 + example/ssh2_echo.c | 1 + example/ssh2_exec.c | 1 + example/subsystem_netconf.c | 1 + example/tcpip-forward.c | 2 ++ example/x11.c | 10 +++++++++- tests/test_ssh2.c | 1 + 25 files changed, 36 insertions(+), 1 deletion(-) diff --git a/example/direct_tcpip.c b/example/direct_tcpip.c index 46d21e90..3dee2697 100644 --- a/example/direct_tcpip.c +++ b/example/direct_tcpip.c @@ -305,6 +305,7 @@ int main(int argc, char *argv[]) shutdown: if(forwardsock != LIBSSH2_INVALID_SOCKET) { + shutdown(forwardsock, 2); #ifdef WIN32 closesocket(forwardsock); #else @@ -313,6 +314,7 @@ shutdown: } if(listensock != LIBSSH2_INVALID_SOCKET) { + shutdown(listensock, 2); #ifdef WIN32 closesocket(listensock); #else @@ -329,6 +331,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/scp.c b/example/scp.c index a80c5124..ab4ad5f3 100644 --- a/example/scp.c +++ b/example/scp.c @@ -178,6 +178,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/scp_nonblock.c b/example/scp_nonblock.c index 13951dc6..a8f95cb1 100644 --- a/example/scp_nonblock.c +++ b/example/scp_nonblock.c @@ -281,6 +281,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/scp_write.c b/example/scp_write.c index 7390548d..e56df3c1 100644 --- a/example/scp_write.c +++ b/example/scp_write.c @@ -207,6 +207,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/scp_write_nonblock.c b/example/scp_write_nonblock.c index 29ff08bd..dc87dbf5 100644 --- a/example/scp_write_nonblock.c +++ b/example/scp_write_nonblock.c @@ -267,6 +267,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp.c b/example/sftp.c index c85012bc..4568b2a8 100644 --- a/example/sftp.c +++ b/example/sftp.c @@ -290,6 +290,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp_RW_nonblock.c b/example/sftp_RW_nonblock.c index 25f02a31..b7e8b238 100644 --- a/example/sftp_RW_nonblock.c +++ b/example/sftp_RW_nonblock.c @@ -338,6 +338,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp_append.c b/example/sftp_append.c index 60ced4f3..e3de2ae9 100644 --- a/example/sftp_append.c +++ b/example/sftp_append.c @@ -227,6 +227,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp_mkdir.c b/example/sftp_mkdir.c index 2edfcba2..4a714680 100644 --- a/example/sftp_mkdir.c +++ b/example/sftp_mkdir.c @@ -168,6 +168,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp_mkdir_nonblock.c b/example/sftp_mkdir_nonblock.c index b9902372..fabc0780 100644 --- a/example/sftp_mkdir_nonblock.c +++ b/example/sftp_mkdir_nonblock.c @@ -167,6 +167,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp_nonblock.c b/example/sftp_nonblock.c index 19685aca..6ac5290e 100644 --- a/example/sftp_nonblock.c +++ b/example/sftp_nonblock.c @@ -284,6 +284,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp_write.c b/example/sftp_write.c index 85818a71..c7e84fef 100644 --- a/example/sftp_write.c +++ b/example/sftp_write.c @@ -211,6 +211,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp_write_nonblock.c b/example/sftp_write_nonblock.c index 4570318d..42d3ee43 100644 --- a/example/sftp_write_nonblock.c +++ b/example/sftp_write_nonblock.c @@ -269,6 +269,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftp_write_sliding.c b/example/sftp_write_sliding.c index f6f2b33b..9dee8ddd 100644 --- a/example/sftp_write_sliding.c +++ b/example/sftp_write_sliding.c @@ -280,6 +280,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftpdir.c b/example/sftpdir.c index 8d9bd3d9..487f2204 100644 --- a/example/sftpdir.c +++ b/example/sftpdir.c @@ -291,6 +291,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/sftpdir_nonblock.c b/example/sftpdir_nonblock.c index ca12e625..3cd38184 100644 --- a/example/sftpdir_nonblock.c +++ b/example/sftpdir_nonblock.c @@ -231,6 +231,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/ssh2.c b/example/ssh2.c index 26f15cfe..2fcee0be 100644 --- a/example/ssh2.c +++ b/example/ssh2.c @@ -339,6 +339,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/ssh2_agent.c b/example/ssh2_agent.c index 9c7997d1..aacabd44 100644 --- a/example/ssh2_agent.c +++ b/example/ssh2_agent.c @@ -234,6 +234,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/ssh2_agent_forwarding.c b/example/ssh2_agent_forwarding.c index c12c1989..584f4318 100644 --- a/example/ssh2_agent_forwarding.c +++ b/example/ssh2_agent_forwarding.c @@ -282,6 +282,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/ssh2_echo.c b/example/ssh2_echo.c index 70115fed..c254c0ce 100644 --- a/example/ssh2_echo.c +++ b/example/ssh2_echo.c @@ -353,6 +353,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/ssh2_exec.c b/example/ssh2_exec.c index c39421fc..7f559b2a 100644 --- a/example/ssh2_exec.c +++ b/example/ssh2_exec.c @@ -291,6 +291,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/subsystem_netconf.c b/example/subsystem_netconf.c index 7029fb8d..fa96b13b 100644 --- a/example/subsystem_netconf.c +++ b/example/subsystem_netconf.c @@ -289,6 +289,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/tcpip-forward.c b/example/tcpip-forward.c index 156075bb..2b99f95c 100644 --- a/example/tcpip-forward.c +++ b/example/tcpip-forward.c @@ -300,6 +300,7 @@ int main(int argc, char *argv[]) shutdown: if(forwardsock != LIBSSH2_INVALID_SOCKET) { + shutdown(forwardsock, 2); #ifdef WIN32 closesocket(forwardsock); #else @@ -319,6 +320,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2); #ifdef WIN32 closesocket(sock); #else diff --git a/example/x11.c b/example/x11.c index fce07771..b16a0f88 100644 --- a/example/x11.c +++ b/example/x11.c @@ -180,8 +180,10 @@ static void x11_callback(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, chan_iter->next = new; } } - else + else { + shutdown(sock, SHUT_RDWR); close(sock); + } } } return; @@ -345,6 +347,7 @@ int main(int argc, char *argv[]) if(rc) { fprintf(stderr, "Failed to authenticate\n"); session_shutdown(session); + shutdown(sock, SHUT_RDWR); close(sock); return -1; } @@ -354,6 +357,7 @@ int main(int argc, char *argv[]) if(!channel) { fprintf(stderr, "Failed to open a new channel\n"); session_shutdown(session); + shutdown(sock, SHUT_RDWR); close(sock); return -1; } @@ -363,6 +367,7 @@ int main(int argc, char *argv[]) if(rc) { fprintf(stderr, "Failed to request a pty\n"); session_shutdown(session); + shutdown(sock, SHUT_RDWR); close(sock); return -1; } @@ -372,6 +377,7 @@ int main(int argc, char *argv[]) if(rc) { fprintf(stderr, "Failed to request X11 forwarding\n"); session_shutdown(session); + shutdown(sock, SHUT_RDWR); close(sock); return -1; } @@ -381,6 +387,7 @@ int main(int argc, char *argv[]) if(rc) { fprintf(stderr, "Failed to open a shell\n"); session_shutdown(session); + shutdown(sock, SHUT_RDWR); close(sock); return -1; } @@ -389,6 +396,7 @@ int main(int argc, char *argv[]) if(rc) { fprintf(stderr, "Failed to entered in raw mode\n"); session_shutdown(session); + shutdown(sock, SHUT_RDWR); close(sock); return -1; } diff --git a/tests/test_ssh2.c b/tests/test_ssh2.c index 50ab5851..5267063c 100644 --- a/tests/test_ssh2.c +++ b/tests/test_ssh2.c @@ -228,6 +228,7 @@ shutdown: } if(sock != LIBSSH2_INVALID_SOCKET) { + shutdown(sock, 2 /* SHUT_RDWR */); #ifdef WIN32 closesocket(sock); #else