=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/misc.c,v retrieving revision 1.5.2.1 retrieving revision 1.5.2.2 diff -u -r1.5.2.1 -r1.5.2.2 --- src/usr.bin/ssh/misc.c 2001/09/27 19:03:54 1.5.2.1 +++ src/usr.bin/ssh/misc.c 2002/03/09 00:20:44 1.5.2.2 @@ -1,5 +1,3 @@ -/* $OpenBSD: misc.c,v 1.5.2.1 2001/09/27 19:03:54 jason Exp $ */ - /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -25,7 +23,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: misc.c,v 1.5.2.1 2001/09/27 19:03:54 jason Exp $"); +RCSID("$OpenBSD: misc.c,v 1.5.2.2 2002/03/09 00:20:44 miod Exp $"); #include "misc.h" #include "log.h" @@ -37,7 +35,7 @@ { char *t = s; while (*t) { - if(*t == '\n' || *t == '\r') { + if (*t == '\n' || *t == '\r') { *t = '\0'; return s; } @@ -65,9 +63,8 @@ debug("fd %d setting O_NONBLOCK", fd); val |= O_NONBLOCK; if (fcntl(fd, F_SETFL, val) == -1) - if (errno != ENODEV) - error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", - fd, strerror(errno)); + debug("fcntl(%d, F_SETFL, O_NONBLOCK): %s", + fd, strerror(errno)); } void @@ -87,11 +84,32 @@ debug("fd %d clearing O_NONBLOCK", fd); val &= ~O_NONBLOCK; if (fcntl(fd, F_SETFL, val) == -1) - if (errno != ENODEV) - error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", - fd, strerror(errno)); + debug("fcntl(%d, F_SETFL, O_NONBLOCK): %s", + fd, strerror(errno)); } +/* disable nagle on socket */ +void +set_nodelay(int fd) +{ + int opt; + socklen_t optlen; + + optlen = sizeof opt; + if (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) { + error("getsockopt TCP_NODELAY: %.100s", strerror(errno)); + return; + } + if (opt == 1) { + debug2("fd %d is TCP_NODELAY", fd); + return; + } + opt = 1; + debug("fd %d setting TCP_NODELAY", fd); + if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, sizeof opt) == -1) + error("setsockopt TCP_NODELAY: %.100s", strerror(errno)); +} + /* Characters considered whitespace in strsep calls. */ #define WHITESPACE " \t\r\n" @@ -292,7 +310,7 @@ if (args->list == NULL) { args->nalloc = 32; args->num = 0; - } else if (args->num+2 >= args->nalloc) + } else if (args->num+2 >= args->nalloc) args->nalloc *= 2; args->list = xrealloc(args->list, args->nalloc * sizeof(char *));