From c9ebbe5a537871cd34d8809f41a000468643e8d6 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Fri, 13 Aug 2004 22:06:23 +0000 Subject: [PATCH] Switch back to rcvtimeo based timeouts but have option to make type a preference (when prefereces are implemented) --- src/syncterm/rlogin.c | 22 ++++++++++++++++++---- src/syncterm/rlogin.h | 1 + src/syncterm/term.c | 4 +++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/syncterm/rlogin.c b/src/syncterm/rlogin.c index 0ae44b150c..d3e261e0d6 100644 --- a/src/syncterm/rlogin.c +++ b/src/syncterm/rlogin.c @@ -5,6 +5,8 @@ static SOCKET rlogin_socket=INVALID_SOCKET; +int rcvtimeo=1; + int rlogin_recv(char *buffer, size_t buflen) { int r; @@ -51,7 +53,6 @@ int rlogin_connect(char *addr, int port, char *ruser, char *passwd, int bedumb) char nil=0; char *p; unsigned int neta; - unsigned long l; for(p=addr;*p;p++) if(*p!='.' && !isdigit(*p)) @@ -93,9 +94,22 @@ int rlogin_connect(char *addr, int port, char *ruser, char *passwd, int bedumb) return(-1); } - l=1; - ioctlsocket(rlogin_socket, FIONBIO,&l); - /* fcntl(rlogin_socket, F_SETFL, fcntl(rlogin_socket, F_GETFL)|O_NONBLOCK); */ + if(rcvtimeo) { + #ifdef _WIN32 + int tv=10; + #else + struct timeval tv; + + tv.tv_sec=0; + tv.tv_usec=10000; + #endif + + setsockopt(rlogin_socket,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv)); + } + else { + unsigned long l=1; + ioctlsocket(rlogin_socket, FIONBIO,&l); + } if(!bedumb) { rlogin_send("",1,1000); diff --git a/src/syncterm/rlogin.h b/src/syncterm/rlogin.h index 3375654803..7db1ae18fe 100644 --- a/src/syncterm/rlogin.h +++ b/src/syncterm/rlogin.h @@ -4,6 +4,7 @@ #include <sockwrap.h> extern SOCKET rlogin_socket; +extern int rcvtimeo; int rlogin_recv(char *buffer, size_t buflen); int rlogin_send(char *buffer, size_t buflen, unsigned int timeout); diff --git a/src/syncterm/term.c b/src/syncterm/term.c index af5eb0bec7..648eefbf80 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -2,6 +2,7 @@ #include <ciolib.h> #include <keys.h> +#include "rlogin.h" #include "term.h" #include "uifcinit.h" #include "menu.h" @@ -117,6 +118,7 @@ void doterm(void) } } - SLEEP(1); + if(!rcvtimeo) + SLEEP(1); } } -- GitLab