From 10d5c9cf3b4000c36687923420e68eed0dcc279c Mon Sep 17 00:00:00 2001 From: Frank Rolsted Jensen Date: Wed, 4 Jun 2025 11:19:24 +0200 Subject: [PATCH] Handling of initial protocol error changed The client accepts a long(er) response time when waiting for server to enable RFC2217 (telnet option). Bug in hangling of rx timeout fixed --- src/telnet_basic.c | 9 +++++---- src/ttynvt.c | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/telnet_basic.c b/src/telnet_basic.c index f3c64ee..37b3ad4 100644 --- a/src/telnet_basic.c +++ b/src/telnet_basic.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "telnet.h" #include "telnet_param.h" @@ -284,12 +285,12 @@ int telnet_open(tn_ctx_t *tcc, int mode) while (1) { res = tcc->srv_rx(tcc->cctx, 1000); - if (res <= 0) - return -1; + if (res < 0) + return errno; else if (tcc->mode_rfc2217) return 0; - else if (t - time(NULL) > 2) - return -1; + else if (time(NULL) - t > 10) + return EPROTO; } } diff --git a/src/ttynvt.c b/src/ttynvt.c index 468f762..32229bf 100644 --- a/src/ttynvt.c +++ b/src/ttynvt.c @@ -470,9 +470,9 @@ static void ttynvt_open(fuse_req_t req, struct fuse_file_info *info) res = telnet_open(tty->tn, ttynvt_param.raw ? TN_MODE_RAW : TN_MODE_TELNET); - if (res < 0) + if (res != 0) { - errno = EPROTO; + errno = res; goto open_err; }