mirror of
https://github.com/curl/curl.git
synced 2026-08-25 10:13:36 +03:00
- Jean-Francois Bertrand reported a libcurl crash with CURLOPT_TCP_NODELAY
since libcurl used getprotobyname() and that isn't thread-safe. We now switched to use IPPROTO_TCP unconditionally, but perhaps the proper fix is to detect the thread-safe version of the function and use that. http://curl.haxx.se/mail/lib-2008-05/0011.html
This commit is contained in:
parent
3d29bda9f8
commit
b84b71f524
3 changed files with 18 additions and 3 deletions
|
|
@ -685,7 +685,14 @@ static void tcpnodelay(struct connectdata *conn,
|
|||
socklen_t onoff = (socklen_t) data->set.tcp_nodelay;
|
||||
int proto = IPPROTO_TCP;
|
||||
|
||||
#ifdef HAVE_GETPROTOBYNAME
|
||||
#if 0
|
||||
/* The use of getprotobyname() is disabled since it isn't thread-safe on
|
||||
numerous systems. On these getprotobyname_r() should be used instead, but
|
||||
that exists in at least one 4 arg version and one 5 arg version, and
|
||||
since the proto number rarely changes anyway we now just use the hard
|
||||
coded number. The "proper" fix would need a configure check for the
|
||||
correct function much in the same style the gethostbyname_r versions are
|
||||
detected. */
|
||||
struct protoent *pe = getprotobyname("tcp");
|
||||
if(pe)
|
||||
proto = pe->p_proto;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue