From 2309f15d89e94babb2e9ef29225a40d822828379 Mon Sep 17 00:00:00 2001 From: antirez Date: Wed, 22 Oct 2014 15:23:21 +0200 Subject: anet.c: new API anetSendTimeout(). --- src/anet.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/anet.c') diff --git a/src/anet.c b/src/anet.c index 9be32fda4..1e5d85495 100644 --- a/src/anet.c +++ b/src/anet.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -178,6 +179,20 @@ int anetTcpKeepAlive(char *err, int fd) return ANET_OK; } +/* Set the socket send timeout (SO_SNDTIMEO socket option) to the specified + * number of milliseconds, or disable it if the 'ms' argument is zero. */ +int anetSendTimeout(char *err, int fd, long long ms) { + struct timeval tv; + + tv.tv_sec = ms/1000; + tv.tv_usec = (ms%1000)*1000; + if (setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) == -1) { + anetSetError(err, "setsockopt SO_SNDTIMEO: %s", strerror(errno)); + return ANET_ERR; + } + return ANET_OK; +} + /* anetGenericResolve() is called by anetResolve() and anetResolveIP() to * do the actual work. It resolves the hostname "host" and set the string * representation of the IP address into the buffer pointed by "ipbuf". -- cgit v1.2.1