isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit 2ef6dc8a9014d420e4ec771c35ee13be0ce0c9a2
parent 37a28d81333ce1295d9634e8211c6b3d05ac0dc9
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Fri, 29 Mar 2013 17:51:50 +0100

factor out socket_connect_failed()

Diffstat:
Msrc/socket.c | 22+++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/socket.c b/src/socket.c @@ -296,6 +296,7 @@ static void start_tls_p3( conn_t *conn, int ok ) static void socket_fd_cb( int, void * ); +static void socket_connect_failed( conn_t * ); static void socket_connected2( conn_t * ); static void socket_connect_bail( conn_t * ); @@ -355,7 +356,8 @@ socket_connect( conn_t *sock, void (*cb)( int ok, void *aux ) ) he = gethostbyname( conf->host ); if (!he) { error( "IMAP error: Cannot resolve server '%s'\n", conf->host ); - goto bail; + socket_connect_bail( sock ); + return; } info( "\vok\n" ); @@ -375,9 +377,8 @@ socket_connect( conn_t *sock, void (*cb)( int ok, void *aux ) ) infon( "Connecting to %s... ", sock->name ); if (connect( s, (struct sockaddr *)&addr, sizeof(addr) )) { if (errno != EINPROGRESS) { - sys_error( "Cannot connect to %s", sock->name ); - socket_close_internal( sock ); - goto bail; + socket_connect_failed( sock ); + return; } conf_fd( s, 0, POLLOUT ); sock->state = SCK_CONNECTING; @@ -389,9 +390,14 @@ socket_connect( conn_t *sock, void (*cb)( int ok, void *aux ) ) info( "\vok\n" ); socket_connected2( sock ); return; +} - bail: - socket_connect_bail( sock ); +static void +socket_connect_failed( conn_t *conn ) +{ + sys_error( "Cannot connect to %s", conn->name ); + socket_close_internal( conn ); + socket_connect_bail( conn ); } static void @@ -406,9 +412,7 @@ socket_connected( conn_t *conn ) } if (soerr) { errno = soerr; - sys_error( "Cannot connect to %s", conn->name ); - socket_close_internal( conn ); - socket_connect_bail( conn ); + socket_connect_failed( conn ); return; } socket_connected2( conn );