aboutsummaryrefslogtreecommitdiff
path: root/src/client.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2013-07-14 13:31:24 +0200
committerAndreas Schneider <asn@cryptomilk.org>2013-07-14 13:31:24 +0200
commitc64ec43eef8ec5a8b8a8f4c4c3216043aea8e08a (patch)
tree33131e402f35d800cf923f837ae4c72166703b27 /src/client.c
parent0d3deeec101b0d6568d7c04eda833bde47c7329c (diff)
downloadlibssh-c64ec43eef8ec5a8b8a8f4c4c3216043aea8e08a.tar.gz
libssh-c64ec43eef8ec5a8b8a8f4c4c3216043aea8e08a.tar.xz
libssh-c64ec43eef8ec5a8b8a8f4c4c3216043aea8e08a.zip
src: Remove enter_function() and leave_function().
Diffstat (limited to 'src/client.c')
-rw-r--r--src/client.c72
1 files changed, 27 insertions, 45 deletions
diff --git a/src/client.c b/src/client.c
index 1879bf93..99a300b1 100644
--- a/src/client.c
+++ b/src/client.c
@@ -59,11 +59,11 @@
*/
static void socket_callback_connected(int code, int errno_code, void *user){
ssh_session session=(ssh_session)user;
- enter_function();
+
if(session->session_state != SSH_SESSION_STATE_CONNECTING){
ssh_set_error(session,SSH_FATAL, "Wrong state in socket_callback_connected : %d",
session->session_state);
- leave_function();
+
return;
}
SSH_LOG(SSH_LOG_RARE,"Socket connection callback: %d (%d)",code, errno_code);
@@ -74,7 +74,6 @@ static void socket_callback_connected(int code, int errno_code, void *user){
ssh_set_error(session,SSH_FATAL,"%s",strerror(errno_code));
}
session->ssh_connection_callback(session);
- leave_function();
}
/**
@@ -94,10 +93,10 @@ static int callback_receive_banner(const void *data, size_t len, void *user) {
char *str = NULL;
size_t i;
int ret=0;
- enter_function();
+
if(session->session_state != SSH_SESSION_STATE_SOCKET_CONNECTED){
ssh_set_error(session,SSH_FATAL,"Wrong state in callback_receive_banner : %d",session->session_state);
- leave_function();
+
return SSH_ERROR;
}
for(i=0;i<len;++i){
@@ -117,18 +116,18 @@ static int callback_receive_banner(const void *data, size_t len, void *user) {
session->session_state=SSH_SESSION_STATE_BANNER_RECEIVED;
SSH_LOG(SSH_LOG_PACKET,"Received banner: %s",str);
session->ssh_connection_callback(session);
- leave_function();
+
return ret;
}
if(i>127){
/* Too big banner */
session->session_state=SSH_SESSION_STATE_ERROR;
ssh_set_error(session,SSH_FATAL,"Receiving banner: too large banner");
- leave_function();
+
return 0;
}
}
- leave_function();
+
return ret;
}
@@ -146,8 +145,6 @@ int ssh_send_banner(ssh_session session, int server) {
char buffer[128] = {0};
int err=SSH_ERROR;
- enter_function();
-
banner = session->version == 1 ? CLIENTBANNER1 : CLIENTBANNER2;
if (server) {
@@ -173,7 +170,7 @@ int ssh_send_banner(ssh_session session, int server) {
#endif
err=SSH_OK;
end:
- leave_function();
+
return err;
}
@@ -188,8 +185,6 @@ static int dh_handshake(ssh_session session) {
int rc = SSH_AGAIN;
- enter_function();
-
switch (session->dh_handshake_state) {
case DH_STATE_INIT:
switch(session->next_crypto->kex_type){
@@ -203,12 +198,11 @@ static int dh_handshake(ssh_session session) {
break;
#endif
default:
- rc=SSH_ERROR;
- goto error;
+ rc = SSH_ERROR;
}
if (rc == SSH_ERROR) {
- goto error;
+ return SSH_ERROR;
}
session->dh_handshake_state = DH_STATE_INIT_SENT;
@@ -219,16 +213,14 @@ static int dh_handshake(ssh_session session) {
/* wait until ssh_packet_newkeys is called */
break;
case DH_STATE_FINISHED:
- leave_function();
return SSH_OK;
default:
ssh_set_error(session, SSH_FATAL, "Invalid state in dh_handshake(): %d",
session->dh_handshake_state);
- leave_function();
+
return SSH_ERROR;
}
-error:
- leave_function();
+
return rc;
}
@@ -259,27 +251,27 @@ static int ssh_service_request_termination(void *s){
int ssh_service_request(ssh_session session, const char *service) {
ssh_string service_s = NULL;
int rc=SSH_ERROR;
- enter_function();
+
if(session->auth_service_state != SSH_AUTH_SERVICE_NONE)
goto pending;
if (buffer_add_u8(session->out_buffer, SSH2_MSG_SERVICE_REQUEST) < 0) {
- goto error;
+ return SSH_ERROR;
}
service_s = ssh_string_from_char(service);
if (service_s == NULL) {
- goto error;
+ return SSH_ERROR;
}
if (buffer_add_ssh_string(session->out_buffer,service_s) < 0) {
ssh_string_free(service_s);
- goto error;
+ return SSH_ERROR;
}
ssh_string_free(service_s);
session->auth_service_state=SSH_AUTH_SERVICE_SENT;
if (packet_send(session) == SSH_ERROR) {
ssh_set_error(session, SSH_FATAL,
"Sending SSH2_MSG_SERVICE_REQUEST failed.");
- goto error;
+ return SSH_ERROR;
}
SSH_LOG(SSH_LOG_PACKET,
@@ -287,8 +279,9 @@ int ssh_service_request(ssh_session session, const char *service) {
pending:
rc=ssh_handle_packets_termination(session,SSH_TIMEOUT_USER,
ssh_service_request_termination, session);
- if(rc == SSH_ERROR)
- goto error;
+ if (rc == SSH_ERROR) {
+ return SSH_ERROR;
+ }
switch(session->auth_service_state){
case SSH_AUTH_SERVICE_DENIED:
ssh_set_error(session,SSH_FATAL,"ssh_auth_service request denied");
@@ -305,8 +298,7 @@ pending:
rc=SSH_ERROR;
break;
}
-error:
- leave_function();
+
return rc;
}
@@ -324,7 +316,7 @@ error:
*/
static void ssh_client_connection_callback(ssh_session session){
int ssh1,ssh2;
- enter_function();
+
switch(session->session_state){
case SSH_SESSION_STATE_NONE:
case SSH_SESSION_STATE_CONNECTING:
@@ -423,13 +415,13 @@ static void ssh_client_connection_callback(ssh_session session){
default:
ssh_set_error(session,SSH_FATAL,"Invalid state %d",session->session_state);
}
- leave_function();
+
return;
- error:
+error:
ssh_socket_close(session->socket);
session->alive = 0;
session->session_state=SSH_SESSION_STATE_ERROR;
- leave_function();
+
}
/** @internal
@@ -466,7 +458,6 @@ int ssh_connect(ssh_session session) {
return SSH_ERROR;
}
- enter_function();
switch(session->pending_call_state){
case SSH_PENDING_CALL_NONE:
break;
@@ -474,28 +465,25 @@ int ssh_connect(ssh_session session) {
goto pending;
default:
ssh_set_error(session,SSH_FATAL,"Bad call during pending SSH call in ssh_connect");
- leave_function();
+
return SSH_ERROR;
}
session->alive = 0;
session->client = 1;
if (ssh_init() < 0) {
- leave_function();
return SSH_ERROR;
}
if (session->opts.fd == SSH_INVALID_SOCKET &&
session->opts.host == NULL &&
session->opts.ProxyCommand == NULL) {
ssh_set_error(session, SSH_FATAL, "Hostname required");
- leave_function();
return SSH_ERROR;
}
ret = ssh_options_apply(session);
if (ret < 0) {
ssh_set_error(session, SSH_FATAL, "Couldn't apply options");
- leave_function();
return SSH_ERROR;
}
SSH_LOG(SSH_LOG_RARE,"libssh %s, using threading %s", ssh_copyright(), ssh_threads_get_type());
@@ -521,7 +509,6 @@ int ssh_connect(ssh_session session) {
session->opts.bindaddr);
}
if (ret == SSH_ERROR) {
- leave_function();
return SSH_ERROR;
}
@@ -556,10 +543,9 @@ pending:
}
SSH_LOG(SSH_LOG_PACKET,"ssh_connect: Actual state : %d",session->session_state);
if(!ssh_is_blocking(session) && !ssh_connect_termination(session)){
- leave_function();
return SSH_AGAIN;
}
- leave_function();
+
session->pending_call_state=SSH_PENDING_CALL_NONE;
if(session->session_state == SSH_SESSION_STATE_ERROR || session->session_state == SSH_SESSION_STATE_DISCONNECTED)
return SSH_ERROR;
@@ -616,8 +602,6 @@ void ssh_disconnect(ssh_session session) {
return;
}
- enter_function();
-
if (session->socket != NULL && ssh_socket_is_open(session->socket)) {
if (buffer_add_u8(session->out_buffer, SSH2_MSG_DISCONNECT) < 0) {
goto error;
@@ -683,8 +667,6 @@ error:
ssh_list_free(session->packet_callbacks);
session->packet_callbacks=NULL;
}
-
- leave_function();
}
const char *ssh_copyright(void) {