Skip to content
  1. Feb 05, 2013
  2. Feb 01, 2013
    • Daniel Stenberg's avatar
      singleipconnect: simplify and clean up · 56b7c87c
      Daniel Stenberg authored
      Remove timeout argument that's never used.
      
      Make the actual connection get detected on a single spot to reduce code
      duplication.
      
      Store the IPv6 state already when the connection is attempted.
      56b7c87c
  3. Jan 17, 2013
    • Daniel Stenberg's avatar
      always-multi: always use non-blocking internals · c4312741
      Daniel Stenberg authored
      Remove internal separated behavior of the easy vs multi intercace.
      curl_easy_perform() is now using the multi interface itself.
      
      Several minor multi interface quirks and bugs have been fixed in the
      process.
      
      Much help with debugging this has been provided by: Yang Tse
      c4312741
  4. Jan 08, 2013
    • Yang Tse's avatar
      build: fix circular header inclusion with other packages · 5a053ffe
      Yang Tse authored
      This commit renames lib/setup.h to lib/curl_setup.h and
      renames lib/setup_once.h to lib/curl_setup_once.h.
      
      Removes the need and usage of a header inclusion guard foreign
      to libcurl. [1]
      
      Removes the need and presence of an alarming notice we carried
      in old setup_once.h [2]
      
      ----------------------------------------
      
      1 - lib/setup_once.h used __SETUP_ONCE_H macro as header inclusion guard
          up to commit ec691ca3 which changed this to HEADER_CURL_SETUP_ONCE_H,
          this single inclusion guard is enough to ensure that inclusion of
          lib/setup_once.h done from lib/setup.h is only done once.
      
          Additionally lib/setup.h has always used __SETUP_ONCE_H macro to
          protect inclusion of setup_once.h even after commit ec691ca3, this
          was to avoid a circular header inclusion triggered when building a
          c-ares enabled version with c-ares sources available which also has
          a setup_once.h header. Commit ec691ca3 exposes the real nature of
          __SETUP_ONCE_H usage in lib/setup.h, it is a header inclusion guard
          foreign to libcurl belonging to c-ares's setup_once.h
      
          The renaming this commit does, fixes the circular header inclusion,
          and as such removes the need and usage of a header inclusion guard
          foreign to libcurl. Macro __SETUP_ONCE_H no longer used in libcurl.
      
      2 - Due to the circular interdependency of old lib/setup_once.h and the
          c-ares setup_once.h header, old file lib/setup_once.h has carried
          back from 2006 up to now days an alarming and prominent notice about
          the need of keeping libcurl's and c-ares's setup_once.h in sync.
      
          Given that this commit fixes the circular interdependency, the need
          and presence of mentioned notice is removed.
      
          All mentioned interdependencies come back from now old days when
          the c-ares project lived inside a curl subdirectory. This commit
          removes last traces of such fact.
      5a053ffe
  5. Jan 06, 2013
    • Yang Tse's avatar
      Revert changes relative to lib/*.[ch] recent renaming · 4a5aa668
      Yang Tse authored
      This reverts renaming and usage of lib/*.h header files done
      28-12-2012, reverting 2 commits:
      
        f871de00... build: make use of 76 lib/*.h renamed files
        ffd8e127... build: rename 76 lib/*.h files
      
      This also reverts removal of redundant include guard (redundant thanks
      to changes in above commits) done 2-12-2013, reverting 1 commit:
      
        c087374c... curl_setup.h: remove redundant include guard
      
      This also reverts renaming and usage of lib/*.c source files done
      3-12-2013, reverting 3 commits:
      
        13606bbf... build: make use of 93 lib/*.c renamed files
        5b6e7927... build: rename 93 lib/*.c files
        7d83dfff... build: commit 13606bbf follow-up 1
      
      Start of related discussion thread:
      
        http://curl.haxx.se/mail/lib-2013-01/0012.html
      
      Asking for confirmation on pushing this revertion commit:
      
        http://curl.haxx.se/mail/lib-2013-01/0048.html
      
      Confirmation summary:
      
        http://curl.haxx.se/mail/lib-2013-01/0079.html
      
      NOTICE: The list of 2 files that have been modified by other
      intermixed commits, while renamed, and also by at least one
      of the 6 commits this one reverts follows below. These 2 files
      will exhibit a hole in history unless git's '--follow' option
      is used when viewing logs.
      
        lib/curl_imap.h
        lib/curl_smtp.h
      4a5aa668
  6. Jan 03, 2013
    • Yang Tse's avatar
      build: rename 93 lib/*.c files · 5b6e7927
      Yang Tse authored
      93 lib/*.c source files renamed to use our standard naming scheme.
      
      This commit only does the file renaming.
      
      ----------------------------------------
      
        renamed:    lib/amigaos.c -> lib/curl_amigaos.c
        renamed:    lib/asyn-ares.c -> lib/curl_asyn_ares.c
        renamed:    lib/asyn-thread.c -> lib/curl_asyn_thread.c
        renamed:    lib/axtls.c -> lib/curl_axtls.c
        renamed:    lib/base64.c -> lib/curl_base64.c
        renamed:    lib/bundles.c -> lib/curl_bundles.c
        renamed:    lib/conncache.c -> lib/curl_conncache.c
        renamed:    lib/connect.c -> lib/curl_connect.c
        renamed:    lib/content_encoding.c -> lib/curl_content_encoding.c
        renamed:    lib/cookie.c -> lib/curl_cookie.c
        renamed:    lib/cyassl.c -> lib/curl_cyassl.c
        renamed:    lib/dict.c -> lib/curl_dict.c
        renamed:    lib/easy.c -> lib/curl_easy.c
        renamed:    lib/escape.c -> lib/curl_escape.c
        renamed:    lib/file.c -> lib/curl_file.c
        renamed:    lib/fileinfo.c -> lib/curl_fileinfo.c
        renamed:    lib/formdata.c -> lib/curl_formdata.c
        renamed:    lib/ftp.c -> lib/curl_ftp.c
        renamed:    lib/ftplistparser.c -> lib/curl_ftplistparser.c
        renamed:    lib/getenv.c -> lib/curl_getenv.c
        renamed:    lib/getinfo.c -> lib/curl_getinfo.c
        renamed:    lib/gopher.c -> lib/curl_gopher.c
        renamed:    lib/gtls.c -> lib/curl_gtls.c
        renamed:    lib/hash.c -> lib/curl_hash.c
        renamed:    lib/hmac.c -> lib/curl_hmac.c
        renamed:    lib/hostasyn.c -> lib/curl_hostasyn.c
        renamed:    lib/hostcheck.c -> lib/curl_hostcheck.c
        renamed:    lib/hostip.c -> lib/curl_hostip.c
        renamed:    lib/hostip4.c -> lib/curl_hostip4.c
        renamed:    lib/hostip6.c -> lib/curl_hostip6.c
        renamed:    lib/hostsyn.c -> lib/curl_hostsyn.c
        renamed:    lib/http.c -> lib/curl_http.c
        renamed:    lib/http_chunks.c -> lib/curl_http_chunks.c
        renamed:    lib/http_digest.c -> lib/curl_http_digest.c
        renamed:    lib/http_negotiate.c -> lib/curl_http_negotiate.c
        renamed:    lib/http_negotiate_sspi.c -> lib/curl_http_negotiate_sspi.c
        renamed:    lib/http_proxy.c -> lib/curl_http_proxy.c
        renamed:    lib/idn_win32.c -> lib/curl_idn_win32.c
        renamed:    lib/if2ip.c -> lib/curl_if2ip.c
        renamed:    lib/imap.c -> lib/curl_imap.c
        renamed:    lib/inet_ntop.c -> lib/curl_inet_ntop.c
        renamed:    lib/inet_pton.c -> lib/curl_inet_pton.c
        renamed:    lib/krb4.c -> lib/curl_krb4.c
        renamed:    lib/krb5.c -> lib/curl_krb5.c
        renamed:    lib/ldap.c -> lib/curl_ldap.c
        renamed:    lib/llist.c -> lib/curl_llist.c
        renamed:    lib/md4.c -> lib/curl_md4.c
        renamed:    lib/md5.c -> lib/curl_md5.c
        renamed:    lib/memdebug.c -> lib/curl_memdebug.c
        renamed:    lib/mprintf.c -> lib/curl_mprintf.c
        renamed:    lib/multi.c -> lib/curl_multi.c
        renamed:    lib/netrc.c -> lib/curl_netrc.c
        renamed:    lib/non-ascii.c -> lib/curl_non_ascii.c
        renamed:    lib/curl_non-ascii.h -> lib/curl_non_ascii.h
        renamed:    lib/nonblock.c -> lib/curl_nonblock.c
        renamed:    lib/nss.c -> lib/curl_nss.c
        renamed:    lib/nwlib.c -> lib/curl_nwlib.c
        renamed:    lib/nwos.c -> lib/curl_nwos.c
        renamed:    lib/openldap.c -> lib/curl_openldap.c
        renamed:    lib/parsedate.c -> lib/curl_parsedate.c
        renamed:    lib/pingpong.c -> lib/curl_pingpong.c
        renamed:    lib/polarssl.c -> lib/curl_polarssl.c
        renamed:    lib/pop3.c -> lib/curl_pop3.c
        renamed:    lib/progress.c -> lib/curl_progress.c
        renamed:    lib/qssl.c -> lib/curl_qssl.c
        renamed:    lib/rawstr.c -> lib/curl_rawstr.c
        renamed:    lib/rtsp.c -> lib/curl_rtsp.c
        renamed:    lib/security.c -> lib/curl_security.c
        renamed:    lib/select.c -> lib/curl_select.c
        renamed:    lib/sendf.c -> lib/curl_sendf.c
        renamed:    lib/share.c -> lib/curl_share.c
        renamed:    lib/slist.c -> lib/curl_slist.c
        renamed:    lib/smtp.c -> lib/curl_smtp.c
        renamed:    lib/socks.c -> lib/curl_socks.c
        renamed:    lib/socks_gssapi.c -> lib/curl_socks_gssapi.c
        renamed:    lib/socks_sspi.c -> lib/curl_socks_sspi.c
        renamed:    lib/speedcheck.c -> lib/curl_speedcheck.c
        renamed:    lib/splay.c -> lib/curl_splay.c
        renamed:    lib/ssh.c -> lib/curl_ssh.c
        renamed:    lib/sslgen.c -> lib/curl_sslgen.c
        renamed:    lib/ssluse.c -> lib/curl_ssluse.c
        renamed:    lib/strdup.c -> lib/curl_strdup.c
        renamed:    lib/strequal.c -> lib/curl_strequal.c
        renamed:    lib/strerror.c -> lib/curl_strerror.c
        renamed:    lib/strtok.c -> lib/curl_strtok.c
        renamed:    lib/strtoofft.c -> lib/curl_strtoofft.c
        renamed:    lib/telnet.c -> lib/curl_telnet.c
        renamed:    lib/tftp.c -> lib/curl_tftp.c
        renamed:    lib/timeval.c -> lib/curl_timeval.c
        renamed:    lib/transfer.c -> lib/curl_transfer.c
        renamed:    lib/url.c -> lib/curl_url.c
        renamed:    lib/version.c -> lib/curl_version.c
        renamed:    lib/warnless.c -> lib/curl_warnless.c
        renamed:    lib/wildcard.c -> lib/curl_wildcard.c
      
      ----------------------------------------
      5b6e7927
  7. Dec 28, 2012
  8. Dec 14, 2012
  9. Dec 07, 2012
    • Linus Nielsen's avatar
      Introducing a new persistent connection caching system using "bundles". · d021f2e8
      Linus Nielsen authored
      A bundle is a list of all persistent connections to the same host.
      The connection cache consists of a hash of bundles, with the
      hostname as the key.
      The benefits may not be obvious, but they are two:
      
      1) Faster search for connections to reuse, since the hash
         lookup only finds connections to the host in question.
      2) It lays out the groundworks for an upcoming patch,
         which will introduce multiple HTTP pipelines.
      
      This patch also removes the awkward list of "closure handles",
      which were needed to send QUIT commands to the FTP server
      when closing a connection.
      Now we allocate a separate closure handle and use that
      one to close all connections.
      
      This has been tested in a live system for a few weeks, and of
      course passes the test suite.
      d021f2e8
  10. Nov 07, 2012
  11. Jul 22, 2012
  12. Jun 12, 2012
  13. Jun 11, 2012
    • Marc Hoersken's avatar
      connect.c/ftp.c: Fixed dereferencing pointer breakin strict-aliasing · 9c94236e
      Marc Hoersken authored
      Fixed warning: dereferencing pointer does break strict-aliasing rules
      by using a union instead of separate pointer variables.
      Internal union sockaddr_u could probably be moved to generic header.
      Thanks to Paul Howarth for the hint about using unions for this.
      
      Important for winbuild: Separate declaration of sockaddr_u pointer.
      The pointer variable *sock cannot be declared and initialized right
      after the union declaration. Therefore it has to be a separate statement.
      9c94236e
  14. Apr 19, 2012
  15. Apr 03, 2012
  16. Mar 20, 2012
  17. Mar 16, 2012
  18. Feb 09, 2012
    • Dave Reisner's avatar
      add library support for tuning TCP_KEEPALIVE · 705f0f7a
      Dave Reisner authored
      This adds three new options to control the behavior of TCP keepalives:
      
      - CURLOPT_TCP_KEEPALIVE: enable/disable probes
      - CURLOPT_TCP_KEEPIDLE: idle time before sending first probe
      - CURLOPT_TCP_KEEPINTVL: delay between successive probes
      
      While not all operating systems support the TCP_KEEPIDLE and
      TCP_KEEPINTVL knobs, the library will still allow these options to be
      set by clients, silently ignoring the values.
      705f0f7a
  19. Jan 28, 2012
  20. Jan 16, 2012
  21. Dec 20, 2011
    • Daniel Stenberg's avatar
      timeleft_accept: ack global timeout, moved to ftp.c · 130fac6c
      Daniel Stenberg authored
      First off the timeout for accepting a server connect back must of course
      respect a global timeout. Then the timeleft function is only used by ftp
      code so it was moved to ftp.c and made static.
      130fac6c
    • Gokhan Sengun's avatar
      FTP: perform active connections non-blocking · c834213a
      Gokhan Sengun authored
      1- Two new error codes are introduced.
      
      CURLE_FTP_ACCEPT_FAILED to be set whenever ACCEPTing fails because of
      FTP server connected.
      
      CURLE_FTP_ACCEPT_TIMEOUT to be set whenever ACCEPTing timeouts.
      
      Neither of these errors are considered fatal and control connection
      remains OK because it could just be a firewall blocking server to
      connect to the client.
      
      2- One new setopt option was introduced.
      
      CURLOPT_ACCEPTTIMEOUT_MS
      
      It sets the maximum amount of time FTP client is going to wait for a
      server to connect. Internal default accept timeout is 60 seconds.
      c834213a
  22. Dec 13, 2011
  23. Dec 12, 2011
    • Jason Glasgow's avatar
      CURLOPT_INTERFACE: avoid resolving interfaces names · 6e4835c7
      Jason Glasgow authored
      Do not try to resolve interfaces names via DNS by recognizing interface
      names in a few ways.  If the interface option argument has a prefix of
      "if!" then treat the argument as only an interface.  Similarly, if the
      interface argument is the name of an interface (even if it does not have
      an IP address assigned), treat it as an interface name.  Finally, if the
      interface argument is prefixed by "host!" treat it as a hostname that
      must be resolved by /etc/hosts or DNS.
      
      These changes allow a client using the multi interfaces to avoid
      blocking on name resolution if the interface loses its IP address or
      disappears.
      6e4835c7
  24. Dec 07, 2011
  25. Dec 05, 2011
    • Daniel Stenberg's avatar
      FTP: close callback fix · d5b5f64b
      Daniel Stenberg authored
      Keep track of which sockets that are the result of accept() calls and
      refuse to call the closesocket callback for those sockets. Test case 596
      now verifies that the open socket callback is called the same number of
      times as the closed socket callback for active FTP connections.
      
      Bug: http://curl.haxx.se/mail/lib-2011-12/0018.html
      Reported by: Gokhan Sengun
      d5b5f64b
    • Daniel Stenberg's avatar
      FTP: call opensocket callback properly · 088ba97a
      Daniel Stenberg authored
      When the new socket is created for an active connection, it is now done
      using the open socket callback.
      
      Test case 596 was modified to run fine, although it hides the fact that
      the close callback is still called too many times, as it also gets
      called for closing sockets that were created with accept().
      088ba97a
    • Daniel Stenberg's avatar
      Curl_socket: internal replacement for socket() · 9109cdec
      Daniel Stenberg authored
      Moved out into a separate function to work as a "generic" socket()
      replacement.
      9109cdec
  26. Oct 17, 2011
  27. Oct 15, 2011
  28. Sep 09, 2011
    • Daniel Stenberg's avatar
      tcpnodelay: rename variable · 303c9007
      Daniel Stenberg authored
      Renamed the variable from 'proto' to 'level' simply because it is not
      protocol you set but level and that is the name of the argument used in
      man pages and the POSIX documentation of the setsockopt function.
      303c9007
  29. Sep 03, 2011
  30. Aug 18, 2011
    • Daniel Stenberg's avatar
      connect: set TIMER_CONNECT · 3af9ba16
      Daniel Stenberg authored
      When connecting, make sure TIMER_CONNECT is set.
      3af9ba16
    • Daniel Stenberg's avatar
      FTP: fix proxy connect race condition · b998d95b
      Daniel Stenberg authored
      When using the multi interface, a SOCKS proxy, and a connection that
      wouldn't immediately consider itself connected (which my Linux tests do
      by default), libcurl would be tricked into doing _two_ connects to the
      SOCKS proxy when it setup the data connection and then of course the
      second attempt would fail miserably and cause error.
      
      This problem is a regression that was introduced by commit
      4a42e5cd that was introduced in the 7.21.7 release.
      
      Bug: http://curl.haxx.se/mail/lib-2011-08/0199.html
      Reported by: Fabian Keil
      b998d95b
  31. Aug 05, 2011
  32. Jul 26, 2011
  33. Jul 25, 2011
  34. Jul 24, 2011