diff options
author | Ben Lindstrom <mouring@eviladmin.org> | 2002-02-26 19:12:51 +0100 |
---|---|---|
committer | Ben Lindstrom <mouring@eviladmin.org> | 2002-02-26 19:12:51 +0100 |
commit | 1ebd7a5342a91f8aaa3eabd6c86c7afe8d663cd6 (patch) | |
tree | 661c0e5ccf8ce7a9b599430d3e160eaa937916ee | |
parent | - markus@cvs.openbsd.org 2002/02/24 19:14:59 (diff) | |
download | openssh-1ebd7a5342a91f8aaa3eabd6c86c7afe8d663cd6.tar.xz openssh-1ebd7a5342a91f8aaa3eabd6c86c7afe8d663cd6.zip |
- stevesk@cvs.openbsd.org 2002/02/24 19:59:42
[channels.c misc.c]
disable Nagle in connect_to() and channel_post_port_listener() (port
forwarding endpoints). the intention is to preserve the on-the-wire
appearance to applications at either end; the applications can then
enable TCP_NODELAY according to their requirements. ok markus@
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | channels.c | 4 | ||||
-rw-r--r-- | misc.c | 18 |
3 files changed, 24 insertions, 6 deletions
@@ -42,6 +42,12 @@ [auth2.c authfd.c authfd.h authfile.c kexdh.c kexgex.c key.c key.h ssh-dss.c ssh-dss.h ssh-keygen.c ssh-rsa.c ssh-rsa.h sshconnect2.c] signed vs. unsigned: make size arguments u_int, ok stevesk@ + - stevesk@cvs.openbsd.org 2002/02/24 19:59:42 + [channels.c misc.c] + disable Nagle in connect_to() and channel_post_port_listener() (port + forwarding endpoints). the intention is to preserve the on-the-wire + appearance to applications at either end; the applications can then + enable TCP_NODELAY according to their requirements. ok markus@ 20020225 - (bal) Last AIX patch. Moved aix_usrinfo() outside of do_setuserconext() @@ -7715,4 +7721,4 @@ - Wrote replacements for strlcpy and mkdtemp - Released 1.0pre1 -$Id: ChangeLog,v 1.1885 2002/02/26 18:09:42 mouring Exp $ +$Id: ChangeLog,v 1.1886 2002/02/26 18:12:51 mouring Exp $ diff --git a/channels.c b/channels.c index 50d6f16ad..325f278f0 100644 --- a/channels.c +++ b/channels.c @@ -39,7 +39,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: channels.c,v 1.168 2002/02/14 23:27:59 markus Exp $"); +RCSID("$OpenBSD: channels.c,v 1.169 2002/02/24 19:59:42 stevesk Exp $"); #include "ssh.h" #include "ssh1.h" @@ -1116,6 +1116,7 @@ channel_post_port_listener(Channel *c, fd_set * readset, fd_set * writeset) error("accept: %.100s", strerror(errno)); return; } + set_nodelay(newsock); nc = channel_new(rtype, nextstate, newsock, newsock, -1, c->local_window_max, c->local_maxpacket, @@ -2270,6 +2271,7 @@ connect_to(const char *host, u_short port) return -1; } /* success */ + set_nodelay(sock); return sock; } @@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.15 2002/01/24 21:09:25 stevesk Exp $ */ +/* $OpenBSD: misc.c,v 1.16 2002/02/24 19:59:42 stevesk Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. @@ -25,7 +25,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: misc.c,v 1.15 2002/01/24 21:09:25 stevesk Exp $"); +RCSID("$OpenBSD: misc.c,v 1.16 2002/02/24 19:59:42 stevesk Exp $"); #include "misc.h" #include "log.h" @@ -96,10 +96,20 @@ unset_nonblock(int fd) void set_nodelay(int fd) { - int on = 1; + int opt, 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, &on, sizeof on) == -1) + if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, sizeof opt) == -1) error("setsockopt TCP_NODELAY: %.100s", strerror(errno)); } |