multi: support timeouts
authorDaniel Stenberg <daniel@haxx.se>
Tue, 10 Aug 2010 09:02:07 +0000 (11:02 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 15 Aug 2010 11:16:39 +0000 (13:16 +0200)
commit232ad6549a684505efcbb6ed9d7a78943cc5f817
tree92f16de7818a0592fba40107bea2ceb97166cd58
parent03da3ba1c0c26fa3d7113d469eac992cf972dc5a
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.
docs/KNOWN_BUGS
lib/multi.c
lib/multiif.h
lib/url.c
lib/urldata.h