telnet_open(): Handle ETIMEDOUT in connect()

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
Joachim Nilsson
2020-04-27 23:20:55 +02:00
parent 711c59e3a6
commit d2d0792c06
+7
View File
@@ -45,6 +45,7 @@ sdbuf_t *telnet_open(int addr, short port)
struct sockaddr s;
sdbuf_t *ctx;
int saved;
int retries = 10;
ctx = (sdbuf_t *)malloc(sizeof(sdbuf_t));
if (!ctx) {
@@ -70,11 +71,17 @@ sdbuf_t *telnet_open(int addr, short port)
return NULL;
}
retry:
sin = (struct sockaddr_in *)&s;
sin->sin_family = AF_INET;
sin->sin_port = port;
sin->sin_addr.s_addr = addr;
if (-1 == connect(ctx->sd, &s, sizeof(s))) {
if (ETIMEDOUT == errno && retries-- > 0) {
sleep(1);
goto retry;
}
saved = errno;
// perror ("Cannot connect to telnet daemon");
telnet_close(ctx);