summaryrefslogtreecommitdiff
path: root/sshconnect.c
diff options
context:
space:
mode:
Diffstat (limited to 'sshconnect.c')
-rw-r--r--sshconnect.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sshconnect.c b/sshconnect.c
index 8aac221d3..dfa2e5b09 100644
--- a/sshconnect.c
+++ b/sshconnect.c
@@ -13,7 +13,7 @@
13 */ 13 */
14 14
15#include "includes.h" 15#include "includes.h"
16RCSID("$OpenBSD: sshconnect.c,v 1.141 2003/05/15 14:55:25 djm Exp $"); 16RCSID("$OpenBSD: sshconnect.c,v 1.142 2003/05/23 08:29:30 djm Exp $");
17 17
18#include <openssl/bn.h> 18#include <openssl/bn.h>
19 19
@@ -225,7 +225,7 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
225 fd_set *fdset; 225 fd_set *fdset;
226 struct timeval tv; 226 struct timeval tv;
227 socklen_t optlen; 227 socklen_t optlen;
228 int fdsetsz, optval, rc; 228 int fdsetsz, optval, rc, result = -1;
229 229
230 if (timeout <= 0) 230 if (timeout <= 0)
231 return (connect(sockfd, serv_addr, addrlen)); 231 return (connect(sockfd, serv_addr, addrlen));
@@ -257,11 +257,11 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
257 case 0: 257 case 0:
258 /* Timed out */ 258 /* Timed out */
259 errno = ETIMEDOUT; 259 errno = ETIMEDOUT;
260 return (-1); 260 break;
261 case -1: 261 case -1:
262 /* Select error */ 262 /* Select error */
263 debug("select: %s", strerror(errno)); 263 debug("select: %s", strerror(errno));
264 return (-1); 264 break;
265 case 1: 265 case 1:
266 /* Completed or failed */ 266 /* Completed or failed */
267 optval = 0; 267 optval = 0;
@@ -269,18 +269,20 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
269 if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, 269 if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval,
270 &optlen) == -1) 270 &optlen) == -1)
271 debug("getsockopt: %s", strerror(errno)); 271 debug("getsockopt: %s", strerror(errno));
272 return (-1); 272 break;
273 if (optval != 0) { 273 if (optval != 0) {
274 errno = optval; 274 errno = optval;
275 return (-1); 275 break;
276 } 276 }
277 result = 0;
277 break; 278 break;
278 default: 279 default:
279 /* Should not occur */ 280 /* Should not occur */
280 fatal("Bogus return (%d) from select()", rc); 281 fatal("Bogus return (%d) from select()", rc);
281 } 282 }
282 283
283 return (0); 284 xfree(fdset);
285 return (result);
284} 286}
285 287
286/* 288/*