From 60b029869f3f21ba73350793f8f7355f13d538cc Mon Sep 17 00:00:00 2001 From: Gisle Vanem Date: Sun, 26 Feb 2006 17:08:33 +0000 Subject: Use getprotobyname() to retrieve protocol number for TCP (sorry, I don't know how to add this to the configure process). --- lib/config-win32.h | 3 +++ lib/config.dj | 1 + lib/connect.c | 10 +++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/config-win32.h b/lib/config-win32.h index 59dd44130..9b3d531d7 100644 --- a/lib/config-win32.h +++ b/lib/config-win32.h @@ -136,6 +136,9 @@ /* Define if you have the getservbyname function. */ #define HAVE_GETSERVBYNAME 1 +/* Define if you have the getprotobyname function. */ +#define HAVE_GETPROTOBYNAME + /* Define if you have the gettimeofday function. */ /* #define HAVE_GETTIMEOFDAY 1 */ diff --git a/lib/config.dj b/lib/config.dj index 04cf4db41..6fc9513d4 100644 --- a/lib/config.dj +++ b/lib/config.dj @@ -20,6 +20,7 @@ #define HAVE_GETHOSTNAME 1 #define HAVE_GETPASS 1 #define HAVE_GETSERVBYNAME 1 +#define HAVE_GETPROTOBYNAME 1 #define HAVE_GETTIMEOFDAY 1 #define HAVE_INET_ADDR 1 #define HAVE_INET_NTOA 1 diff --git a/lib/connect.c b/lib/connect.c index 787951136..427a87431 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -619,7 +619,15 @@ static void tcpnodelay(struct connectdata *conn, #ifdef TCP_NODELAY struct SessionHandle *data= conn->data; socklen_t onoff = (socklen_t) data->set.tcp_nodelay; - if(setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (void *)&onoff, + int proto = IPPROTO_TCP; + +#ifdef HAVE_GETPROTOBYNAME + struct protoent *pe = getprotobyname("tcp"); + if (pe) + proto = p->p_proto; +#endif + + if(setsockopt(sockfd, proto, TCP_NODELAY, (void *)&onoff, sizeof(onoff)) < 0) infof(data, "Could not set TCP_NODELAY: %s\n", Curl_strerror(conn, Curl_ourerrno())); -- cgit v1.2.3