Commit b84b71f5 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

- 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
parent 3d29bda9
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -7,6 +7,13 @@
                                  Changelog


Daniel Stenberg (3 May 2008)
- 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

Daniel Stenberg (1 May 2008)
- Bart Whiteley provided a patch that made libcurl work properly when an app
  uses the CURLOPT_OPENSOCKETFUNCTION callback to create a unix domain socket
+3 −2
Original line number Diff line number Diff line
@@ -26,7 +26,8 @@ This release includes the following bugfixes:
 o the typechecker can be bypassed by defining CURL_DISABLE_TYPECHECK
 o a pointer mixup could make the FTP code send bad user+password under rare
   circumstances (found when using curlftpfs)
 o the CURLOPT_OPENSOCKETFUNCTION can now be used to create a unix domain socket
 o CURLOPT_OPENSOCKETFUNCTION can now be used to create a unix domain socket
 o CURLOPT_TCP_NODELAY crash due to getprotobyname() use

This release includes the following known bugs:

@@ -47,6 +48,6 @@ advice from friends like these:

 Michal Marek, Daniel Fandrich, Scott Barrett, Alexey Simak, Daniel Black,
 Rafa Muyo, Andre Guibert de Bruet, Brock Noland, Sandor Feldi, Stefan Krause,
 David Shaw, Norbert Frese, Bart Whiteley
 David Shaw, Norbert Frese, Bart Whiteley, Jean-Francois Bertrand

        Thanks! (and sorry if I forgot to mention someone)
+8 −1
Original line number Diff line number Diff line
@@ -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;