aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-05-07 23:49:29 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-05-07 23:49:29 +0200
commitadaf87530dc561314a2261fa6d26c38ce999876f (patch)
treea261b70cd941fbe8c4986f06f33dd1aeaf71675d /lib
parent8914857092f1c7ceb3342b9c4f5e03587e634f5d (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.c2
-rw-r--r--lib/url.c11
-rw-r--r--lib/url.h9
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 */
diff --git a/lib/url.c b/lib/url.c
index 9c9e09fbc..c41db0a7c 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -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;
diff --git a/lib/url.h b/lib/url.h
index cb3dd2f60..63d7f2c48 100644
--- a/lib/url.h
+++ b/lib/url.h
@@ -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