Date: Thu, 21 Jul 2011 11:39:32 GMT From: Catalin Nicutar <cnicutar@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 196496 for review Message-ID: <201107211139.p6LBdWel056318@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@196496?ac=10 Change 196496 by cnicutar@cnicutar_cronos on 2011/07/21 11:38:33 Add UTO support to telnet command mode. Affected files ... .. //depot/projects/soc2011/cnicutar_tcputo_8/src/contrib/telnet/telnet/commands.c#3 edit .. //depot/projects/soc2011/cnicutar_tcputo_8/src/contrib/telnet/telnet/externs.h#3 edit .. //depot/projects/soc2011/cnicutar_tcputo_8/src/contrib/telnet/telnet/main.c#3 edit Differences ... ==== //depot/projects/soc2011/cnicutar_tcputo_8/src/contrib/telnet/telnet/commands.c#3 (text+ko) ==== @@ -878,6 +878,7 @@ { "escape", "character to escape back to telnet command mode", NULL, &escape }, { "rlogin", "rlogin escape character", 0, &rlogin }, { "tracefile", "file to write trace information to", SetNetTrace, (cc_t *)NetTraceFile}, + { "timeout", "tcp timeout for this connection", set_timeout, NULL}, { " ", "", NULL, NULL }, { " ", "The following need 'localchars' to be toggled true", NULL, NULL }, { "flushoutput", "character to cause an Abort Output", NULL, termFlushCharp }, @@ -920,6 +921,21 @@ } } +void +set_timeout(char *s) +{ + if (s == NULL) { + uto = 0; + /* There is not way to "take it back". */ + return; + } + /* Setting the timeout if net is a valid descriptor. */ + uto = strtonum(s, 0, INT_MAX, NULL); + if (uto && net > 0 && setsockopt(net, IPPROTO_TCP, TCP_SNDUTO_TIMEOUT, + &uto, sizeof(uto))) + perror("setsockopt UTO"); +} + static int setcmd(int argc, char *argv[]) { @@ -977,7 +993,8 @@ return 0; } else if (ct->handler) { (*ct->handler)(argv[2]); - printf("%s set to \"%s\".\n", ct->name, (char *)ct->charp); + if (ct->charp) + printf("%s set to \"%s\".\n", ct->name, (char *)ct->charp); } else { if (strcmp("off", argv[2])) { value = special(argv[2]); @@ -1043,7 +1060,8 @@ return 0; } else if (ct->handler) { (*ct->handler)(0); - printf("%s reset to \"%s\".\n", ct->name, (char *)ct->charp); + if (ct->charp) + printf("%s reset to \"%s\".\n", ct->name, (char *)ct->charp); } else { *(ct->charp) = _POSIX_VDISABLE; printf("%s character is '%s'.\n", ct->name, control(*(ct->charp))); ==== //depot/projects/soc2011/cnicutar_tcputo_8/src/contrib/telnet/telnet/externs.h#3 (text+ko) ==== @@ -261,6 +261,7 @@ setcommandmode(void), set_escape_char(char *s), setneturg(void), + set_timeout(char *s), sys_telnet_init(void), telnet(char *), tel_enter_binary(int), ==== //depot/projects/soc2011/cnicutar_tcputo_8/src/contrib/telnet/telnet/main.c#3 (text+ko) ==== @@ -304,7 +304,10 @@ src_addr = optarg; break; case 't': - uto = strtonum(optarg, 0, INT_MAX, NULL); + set_timeout(optarg); + if (!uto) + fprintf(stderr, "Warning: timeout `%s'" + " ignored\n", optarg); break; case 'u': family = AF_UNIX;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107211139.p6LBdWel056318>