From: Robert Wruck Date: Mon, 8 Apr 2013 21:13:05 +0000 (+0200) Subject: tcpkeepalive: Support CURLOPT_TCP_KEEPIDLE on OSX X-Git-Tag: curl-7_30_0~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=29fdb2700f7979e71b8828c18e0e157a44b6db53;p=thirdparty%2Fcurl.git 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. --- diff --git a/lib/connect.c b/lib/connect.c index e159a2b5ce..6090abb36f 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 } }