aboutsummaryrefslogtreecommitdiff
path: root/libssh/client.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2008-03-04 00:44:02 +0000
committerAris Adamantiadis <aris@0xbadc0de.be>2008-03-04 00:44:02 +0000
commit077dd81fcc9453613de18c6d037ef61f3a8e161c (patch)
tree027bfb56ae17b1395100809a6ab791551ab8ca0e /libssh/client.c
parent9b5f8935132433d64757ac60ce0ee4e8c59a8af8 (diff)
downloadlibssh-077dd81fcc9453613de18c6d037ef61f3a8e161c.tar.gz
libssh-077dd81fcc9453613de18c6d037ef61f3a8e161c.tar.xz
libssh-077dd81fcc9453613de18c6d037ef61f3a8e161c.zip
added the socket class and created wrappers
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@137 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/client.c')
-rw-r--r--libssh/client.c40
1 files changed, 13 insertions, 27 deletions
diff --git a/libssh/client.c b/libssh/client.c
index 9af4e627..c498a9ad 100644
--- a/libssh/client.c
+++ b/libssh/client.c
@@ -36,7 +36,7 @@ char *ssh_get_banner(SSH_SESSION *session){
char buffer[128];
int i = 0;
while (i < 127) {
- if(session->fd <0 || read(session->fd, &buffer[i], 1)<=0){
+ if(!ssh_socket_is_open(session->socket) || ssh_socket_read(session->socket, &buffer[i], 1)<=0){
ssh_set_error(session,SSH_FATAL,"Remote host closed connection");
return NULL;
}
@@ -98,7 +98,7 @@ int ssh_send_banner(SSH_SESSION *session,int server){
else
session->clientbanner=strdup(banner);
snprintf(buffer,128,"%s\r\n",banner);
- write(session->fd,buffer,strlen(buffer));
+ ssh_socket_write(session->socket,buffer,strlen(buffer));
return 0;
}
@@ -247,12 +247,10 @@ int ssh_connect(SSH_SESSION *session){
if(fd<0)
return -1;
set_status(options,0.2);
- session->fd=fd;
+ ssh_socket_set_fd(session->socket,fd);
session->alive=1;
if(!(session->serverbanner=ssh_get_banner(session))){
- if(session->fd>=0)
- close(session->fd);
- session->fd=-1;
+ ssh_socket_close(session->socket);
session->alive=0;
return -1;
}
@@ -260,9 +258,7 @@ int ssh_connect(SSH_SESSION *session){
ssh_say(2,"banner : %s\n",session->serverbanner);
/* here we analyse the different protocols the server allows */
if(ssh_analyze_banner(session,&ssh1,&ssh2)){
- if(session->fd>=0)
- close(session->fd);
- session->fd=-1;
+ ssh_socket_close(session->socket);
session->alive=0;
return -1;
}
@@ -275,8 +271,7 @@ int ssh_connect(SSH_SESSION *session){
ssh_set_error(session,SSH_FATAL,
"no version of SSH protocol usable (banner: %s)",
session->serverbanner);
- close(session->fd);
- session->fd=-1;
+ ssh_socket_close(session->socket);
session->alive=0;
return -1;
}
@@ -285,27 +280,21 @@ int ssh_connect(SSH_SESSION *session){
switch(session->version){
case 2:
if(ssh_get_kex(session,0)){
- if(session->fd>=0)
- close(session->fd);
- session->fd=-1;
+ ssh_socket_close(session->socket);
session->alive=0;
return -1;
}
set_status(options,0.6);
ssh_list_kex(&session->server_kex);
if(set_kex(session)){
- if(session->fd>=0)
- close(session->fd);
- session->fd=-1;
+ ssh_socket_close(session->socket);
session->alive=0;
return -1;
}
ssh_send_kex(session,0);
set_status(options,0.8);
if(dh_handshake(session)){
- if(session->fd>=0)
- close(session->fd);
- session->fd=-1;
+ ssh_socket_close(session->socket);
session->alive=0;
return -1;
}
@@ -314,9 +303,7 @@ int ssh_connect(SSH_SESSION *session){
break;
case 1:
if(ssh_get_kex1(session)){
- if(session->fd>=0)
- close(session->fd);
- session->fd=-1;
+ ssh_socket_close(session->socket);
session->alive=0;
return -1;
}
@@ -344,7 +331,7 @@ char *ssh_get_issue_banner(SSH_SESSION *session){
*/
void ssh_disconnect(SSH_SESSION *session){
STRING *str;
- if(session->fd!= -1) {
+ if(ssh_socket_is_open(session->socket)) {
packet_clear_out(session);
buffer_add_u8(session->out_buffer,SSH2_MSG_DISCONNECT);
buffer_add_u32(session->out_buffer,htonl(SSH2_DISCONNECT_BY_APPLICATION));
@@ -352,15 +339,14 @@ void ssh_disconnect(SSH_SESSION *session){
buffer_add_ssh_string(session->out_buffer,str);
free(str);
packet_send(session);
- close(session->fd);
- session->fd=-1;
+ ssh_socket_close(session->socket);
}
session->alive=0;
ssh_cleanup(session);
}
const char *ssh_copyright(){
- return LIBSSH_VERSION " (c) 2003-2006 Aris Adamantiadis (aris@0xbadc0de.be)"
+ return LIBSSH_VERSION " (c) 2003-2008 Aris Adamantiadis (aris@0xbadc0de.be)"
" Distributed under the LGPL, please refer to COPYING file for informations"
" about your rights" ;
}