aboutsummaryrefslogtreecommitdiff
path: root/sshnodelay.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2006-01-27 12:49:14 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2006-01-27 12:49:14 +0000
commit1cb9aba6ea86e27bf349a7658b36c0daa4a70908 (patch)
tree387f40289b74940078ffc2f4055295e9def15711 /sshnodelay.c
parent3883b4eb0cedb3d628a1267aa97f023cb0a2b9bd (diff)
downloadsshfs-1cb9aba6ea86e27bf349a7658b36c0daa4a70908.tar
sshfs-1cb9aba6ea86e27bf349a7658b36c0daa4a70908.tar.gz
sshfs-1cb9aba6ea86e27bf349a7658b36c0daa4a70908.tar.bz2
sshfs-1cb9aba6ea86e27bf349a7658b36c0daa4a70908.zip
fix
Diffstat (limited to 'sshnodelay.c')
-rw-r--r--sshnodelay.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/sshnodelay.c b/sshnodelay.c
new file mode 100644
index 0000000..9e30f27
--- /dev/null
+++ b/sshnodelay.c
@@ -0,0 +1,17 @@
+#define _GNU_SOURCE
+#include <dlfcn.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+
+int connect(int sock, const struct sockaddr *addr, socklen_t addrlen)
+{
+ int (*next_connect)(int, const struct sockaddr *, socklen_t) =
+ dlsym(RTLD_NEXT, "connect");
+ int res = next_connect(sock, addr, addrlen);
+ if (!res && addr->sa_family == AF_INET) {
+ int opt = 1;
+ setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt));
+ }
+ return res;
+}