mirror of
https://github.com/troglobit/libite.git
synced 2026-10-21 11:19:38 +00:00
telnet_open(): Handle ETIMEDOUT in connect()
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
1 parent
711c59e3a6
commit
d2d0792c06
1 file changed
+7
@@ -45,6 +45,7 @@ sdbuf_t *telnet_open(int addr, short port)
|
|||||||
struct sockaddr s;
|
struct sockaddr s;
|
||||||
sdbuf_t *ctx;
|
sdbuf_t *ctx;
|
||||||
int saved;
|
int saved;
|
||||||
|
int retries = 10;
|
||||||
|
|
||||||
ctx = (sdbuf_t *)malloc(sizeof(sdbuf_t));
|
ctx = (sdbuf_t *)malloc(sizeof(sdbuf_t));
|
||||||
if (!ctx) {
|
if (!ctx) {
|
||||||
@@ -70,11 +71,17 @@ sdbuf_t *telnet_open(int addr, short port)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
retry:
|
||||||
sin = (struct sockaddr_in *)&s;
|
sin = (struct sockaddr_in *)&s;
|
||||||
sin->sin_family = AF_INET;
|
sin->sin_family = AF_INET;
|
||||||
sin->sin_port = port;
|
sin->sin_port = port;
|
||||||
sin->sin_addr.s_addr = addr;
|
sin->sin_addr.s_addr = addr;
|
||||||
if (-1 == connect(ctx->sd, &s, sizeof(s))) {
|
if (-1 == connect(ctx->sd, &s, sizeof(s))) {
|
||||||
|
if (ETIMEDOUT == errno && retries-- > 0) {
|
||||||
|
sleep(1);
|
||||||
|
goto retry;
|
||||||
|
}
|
||||||
|
|
||||||
saved = errno;
|
saved = errno;
|
||||||
// perror ("Cannot connect to telnet daemon");
|
// perror ("Cannot connect to telnet daemon");
|
||||||
telnet_close(ctx);
|
telnet_close(ctx);
|
||||||
|
|||||||
Reference in new issue
Block a user