aboutsummaryrefslogtreecommitdiff
path: root/lib/urldata.h
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-08-10 11:02:07 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-08-15 13:16:39 +0200
commit232ad6549a684505efcbb6ed9d7a78943cc5f817 (patch)
tree92f16de7818a0592fba40107bea2ceb97166cd58 /lib/urldata.h
parent03da3ba1c0c26fa3d7113d469eac992cf972dc5a (diff)
multi: support timeouts
Curl_expire() is now expanded to hold a list of timeouts for each easy handle. Only the closest in time will be the one used as the primary timeout for the handle and will be used for the splay tree (which sorts and lists all handles within the multi handle). When the main timeout has triggered/expired, the next timeout in time that is kept in the list will be moved to the main timeout position and used as the key to splay with. This way, all timeouts that are set with Curl_expire() internally will end up as a proper timeout. Previously any Curl_expire() that set a _later_ timeout than what was already set was just silently ignored and thus missed. Setting Curl_expire() with timeout 0 (zero) will cancel all previously added timeouts. Corrects known bug #62.
Diffstat (limited to 'lib/urldata.h')
-rw-r--r--lib/urldata.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/urldata.h b/lib/urldata.h
index 7919921f7..de9acf8bf 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -1094,6 +1094,7 @@ struct UrlState {
#endif /* USE_SSLEAY */
struct timeval expiretime; /* set this with Curl_expire() only */
struct Curl_tree timenode; /* for the splay stuff */
+ struct curl_llist *timeoutlist; /* list of pending timeouts */
/* a place to store the most recently set FTP entrypath */
char *most_recent_ftp_entrypath;