From d2d0792c062acaaca3355f736d8f3f0680b54ef8 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Thu, 26 Mar 2020 08:11:18 +0100 Subject: [PATCH] telnet_open(): Handle ETIMEDOUT in connect() Signed-off-by: Joachim Nilsson --- src/telnet.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/telnet.c b/src/telnet.c index ae41fc7..faf9107 100644 --- a/src/telnet.c +++ b/src/telnet.c @@ -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);