diff options
author | Daniel Stenberg <daniel@haxx.se> | 2010-05-07 23:49:29 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2010-05-07 23:49:29 +0200 |
commit | adaf87530dc561314a2261fa6d26c38ce999876f (patch) | |
tree | a261b70cd941fbe8c4986f06f33dd1aeaf71675d /lib | |
parent | 8914857092f1c7ceb3342b9c4f5e03587e634f5d (diff) |
multi interface: missed storing connection time
Dirk Manske reported a regression. When connecting with the multi
interface, there were situations where libcurl wouldn't store
connect time correctly as it used to (and is documented to) do.
Using his fine sample program we could repeat it, and I wrote up
test case 573 using that code. The problem does not easily show
itself using the local test suite though.
The fix, also as suggested by Dirk, is a bit on the ugly side as
it adds yet another call to Curl_verboseconnect() and setting the
TIMER_CONNECT time. That situation is subject for some closer
inspection in the future.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/connect.c | 2 | ||||
-rw-r--r-- | lib/url.c | 11 | ||||
-rw-r--r-- | lib/url.h | 9 |
3 files changed, 13 insertions, 9 deletions
diff --git a/lib/connect.c b/lib/connect.c index eb6df71d4..4adc7f35a 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -575,6 +575,8 @@ CURLcode Curl_is_connected(struct connectdata *conn, /* we are connected, awesome! */ conn->bits.tcpconnect = TRUE; *connected = TRUE; + Curl_pgrsTime(data, TIMER_CONNECT); /* connect done */ + Curl_verboseconnect(conn); return CURLE_OK; } /* nope, not connected for real */ @@ -150,10 +150,6 @@ static long ConnectionKillOne(struct SessionHandle *data); static void conn_free(struct connectdata *conn); static void signalPipeClose(struct curl_llist *pipeline, bool pipe_broke); -#ifdef CURL_DISABLE_VERBOSE_STRINGS -#define verboseconnect(x) do { } while (0) -#endif - /* * Protocol table. */ @@ -3178,7 +3174,7 @@ static CURLcode ConnectPlease(struct SessionHandle *data, * verboseconnect() displays verbose information after a connect */ #ifndef CURL_DISABLE_VERBOSE_STRINGS -static void verboseconnect(struct connectdata *conn) +void Curl_verboseconnect(struct connectdata *conn) { if(conn->data->set.verbose) infof(conn->data, "Connected to %s (%s) port %ld (#%ld)\n", @@ -3274,8 +3270,7 @@ CURLcode Curl_protocol_connect(struct connectdata *conn, if(!conn->bits.tcpconnect) { Curl_pgrsTime(data, TIMER_CONNECT); /* connect done */ - - verboseconnect(conn); + Curl_verboseconnect(conn); } if(!conn->bits.protoconnstart) { @@ -4997,7 +4992,7 @@ static CURLcode setup_conn(struct connectdata *conn, Curl_pgrsTime(data, TIMER_APPCONNECT); /* we're connected already */ conn->bits.tcpconnect = TRUE; *protocol_done = TRUE; - verboseconnect(conn); + Curl_verboseconnect(conn); } /* Stop the loop now */ break; @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -86,4 +86,11 @@ void Curl_reset_reqproto(struct connectdata *conn); CURLcode Curl_connected_proxy(struct connectdata *conn); +#ifdef CURL_DISABLE_VERBOSE_STRINGS +#define Curl_verboseconnect(x) do { } while (0) +#else +void Curl_verboseconnect(struct connectdata *conn); +#endif + + #endif |