From 29fdb2700f7979e71b8828c18e0e157a44b6db53 Mon Sep 17 00:00:00 2001 From: Robert Wruck Date: Mon, 8 Apr 2013 23:13:05 +0200 Subject: [PATCH] tcpkeepalive: Support CURLOPT_TCP_KEEPIDLE on OSX MacOS X doesn't have TCP_KEEPIDLE/TCP_KEEPINTVL but only a single TCP_KEEPALIVE (see http://developer.apple.com/library/mac/#DOCUMENTATION/Darwin/Reference/ManPages/man4/tcp.4.html). Here is a patch for CURLOPT_TCP_KEEPIDLE on OSX platforms. --- lib/connect.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/connect.c b/lib/connect.c index e159a2b5c..6090abb36 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -148,6 +148,15 @@ tcpkeepalive(struct SessionHandle *data, infof(data, "Failed to set TCP_KEEPINTVL on fd %d\n", sockfd); } #endif +#ifdef TCP_KEEPALIVE + /* Mac OS X style */ + optval = curlx_sltosi(data->set.tcp_keepidle); + KEEPALIVE_FACTOR(optval); + if(setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPALIVE, + (void *)&optval, sizeof(optval)) < 0) { + infof(data, "Failed to set TCP_KEEPALIVE on fd %d\n", sockfd); + } +#endif #endif } }