From 317e90c1c1639b29bb7ec74e74ac98321b242aff Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Tue, 14 Apr 2009 14:52:50 +0000 Subject: Improve ssh_get_disconnect_message(). git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@476 7dcaeef0-15fb-0310-b436-a5af3365683c --- libssh/session.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'libssh/session.c') diff --git a/libssh/session.c b/libssh/session.c index 05a08ee..d70a112 100644 --- a/libssh/session.c +++ b/libssh/session.c @@ -298,19 +298,25 @@ int ssh_get_status(SSH_SESSION *session) { * \return message sent by the server along with the disconnect, or NULL in which case the reason of the disconnect may be found with ssh_get_error. * \see ssh_get_error() */ -const char *ssh_get_disconnect_message(SSH_SESSION *session){ - if(!session->closed) - ssh_set_error(session,SSH_REQUEST_DENIED,"Connection not closed" - " yet"); - else if(session->closed_by_except) - ssh_set_error(session,SSH_REQUEST_DENIED,"Connection closed by " - "socket error"); - else if(!session->discon_msg) - ssh_set_error(session,SSH_FATAL,"Connection correctly closed but " - "no disconnect message"); - else - return session->discon_msg; +const char *ssh_get_disconnect_message(SSH_SESSION *session) { + if (session == NULL) { return NULL; + } + + if (!session->closed) { + ssh_set_error(session, SSH_REQUEST_DENIED, + "Connection not closed yet"); + } else if(session->closed_by_except) { + ssh_set_error(session, SSH_REQUEST_DENIED, + "Connection closed by socket error"); + } else if(!session->discon_msg) { + ssh_set_error(session, SSH_FATAL, + "Connection correctly closed but no disconnect message"); + } else { + return session->discon_msg; + } + + return NULL; } /** \brief get the protocol version of the session -- cgit