aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2010-09-17timeout: use the correct start value as offsetDaniel Stenberg
Rodric provide an awesome recipe that proved libcurl didn't timeout at the requested time - it instead often timed out at [connect time] + [timeout time] instead of the documented and intended [timeout time] only. This bug was due to the code using the wrong base offset when comparing against "now". I could also take the oppurtinity to simplify the code by properly using of the generic help function for this: Curl_timeleft. Reported by: Rodric Glaser Bug: http://curl.haxx.se/bug/view.cgi?id=3061535
2010-09-17Curl_timeleft: avoid returning "no timeout" by mistakeDaniel Stenberg
As this function uses return code 0 to mean that there is no timeout, it needs to check that it doesn't return a time left value that is exactly zero. It could lead to libcurl doing an extra 1000 ms select() call and thus not timing out as accurately as it should. I fell over this bug when working on the bug 3061535 but this fix does not correct that problem alone, although this is a problem that needs to be fixed. Reported by: Rodric Glaser Bug: http://curl.haxx.se/bug/view.cgi?id=3061535
2010-09-14multi: don't do extra expire calls for the connectionDaniel Stenberg
The timeout is set for the connect phase already at the start of the request so we should not add a new one, and we MUST not set expire to 0 as that will remove any other potentially existing timeouts.
2010-09-12inflate_stream: remove redundant check that is always trueDaniel Stenberg
2010-09-12digest: make it clear the condition is always trueDaniel Stenberg
2010-09-12ssluse: removed redundant check that is always trueDaniel Stenberg
2010-09-07chunky parser: only rewind if neededDaniel Stenberg
The code reading chunked encoding attempts to rewind the code if it had read more data than the chunky parser consumes. The rewinding can fail and it will then cause an error. This change now makes the rewinding only happen if pipelining is in use - as that's the only time it really needs to be done. Bug: http://curl.haxx.se/mail/lib-2010-08/0297.html Reported by: Ron Parker
2010-09-06rtsp: avoid SIGSEGV on malformed headerKamil Dudka
2010-09-06rtsp: avoid SIGSEGV on malformed headerKamil Dudka
2010-09-06warning: fix conversion to 'int' from 'size_t'Daniel Stenberg
2010-09-06portabilty: use proper variable type to hold socketsDaniel Stenberg
Curl_getconnectinfo() is changed to return a proper curl_socket_t for the last socket so that it'll work more portably (and cause less compiler warnings).
2010-09-03Trial to fix another compiler warning with braces.Guenter Knauf
2010-09-02Moved S_ISREG define to setup as suggested by Dan.Guenter Knauf
2010-09-02Use own typedef as workaround for broken sspi.h header (f.e. Watcom).Guenter Knauf
2010-09-02Added S_ISREG define for Win32.Guenter Knauf
2010-09-01multi: fixes for timing out handlesDaniel Stenberg
Add a timeout check for handles in the state machine so that they will timeout in all states disregarding what actions that may or may not happen. Fixed a bug in socket_action introduced recently when looping over timed out handles: it wouldn't assign the 'data' variable and thus it wouldn't properly take care of handles. In the update_timer function, the code now checks if the timeout has been removed and then it tells the application. Previously it would always let the remaining timeout(s) just linger to expire later on.
2010-09-01threaded resolver: no more expire 0 callsDaniel Stenberg
Curl_expire() set to 0 expires ALL timeouts so it should only be called if we truly and really want to remove all timeouts for the handle.
2010-09-01resolve_server: simplify codeDaniel Stenberg
Make use of the helper function Curl_timeleft() instead of duplicating code.
2010-08-31multi: make sure the next timeout is used when one expiresDaniel Stenberg
Each easy handle has a list of timeouts, so as soon as the main timeout for a handle expires, we must make sure to get the next entry from the list and re-add the handle to the splay tree. This was attempted previously but was done poorly in my commit 232ad6549a68450.
2010-08-29multi: set timeouts when transfer beginsDaniel Stenberg
When a new transfer is about to start we now set the proper timeouts to expire for the multi interface if they are set for the handle. This is a follow-up bugfix to make sure that easy handles timeout properly when the times expire and the multi interface is used. This also improves curl_multi_timeout().
2010-08-25Makefile: add gopher.c file to buildDaniel Stenberg
As the VC and RISCOS makefiles don't use the .inc file
2010-08-25gopher: enable the header callback/verbosityDaniel Stenberg
2010-08-25gopher: fix memory leak and busyloopDaniel Stenberg
The fix for the busyloop really only is a temporary work-around. It causes a BLOCKING behavior which is a NO-NO. This function should rather be split up in a do and a doing piece where the pieces that aren't possible to send now will be sent in the doing function repeatedly until the entire request is sent.
2010-08-25Gopher using Curl_write; test suite (4 tests)Cameron Kaiser
2010-08-25Remove url.c testCameron Kaiser
2010-08-25Forgot gopher.h in Makefile.incCameron Kaiser
2010-08-25Gopher protocol support (initial release)Cameron Kaiser
2010-08-25http: handle trailer headers in all chunked responsesDaniel Stenberg
HTTP allows that a server sends trailing headers after all the chunks have been sent WITHOUT signalling their presence in the first response headers. The "Trailer:" header is only a SHOULD there and as we need to handle the situation even without that header I made libcurl ignore Trailer: completely. Test case 1116 was added to verify this and to make sure we handle more than one trailer header properly. Reported by: Patrick McManus Bug: http://curl.haxx.se/bug/view.cgi?id=3052450
2010-08-24multi: Fix compile warning on 64-bit systemsBen Greear
2010-08-21Curl_is_connected: use correct errnoDirk Manske
The correctly extracted errno contents were mistakenly overwritten by a newer value that wasn't the correct error value. Bug: http://curl.haxx.se/mail/lib-2010-08/0242.html
2010-08-20Added mk-ca-bundle.vbs script.Guenter Knauf
The script works exactly same as the Perl one except for one thing: when the text descriptions generated with openssl are included then the md5 fingerprints are missing; seems openssl has either a bug or a feature which prints the md5 fingerprint output to stdout instead of writing them to specified file; this script could here do the same as what the Perl scripr does (redirect stdout into file) but this makes the script take up double the time because it needs to launch cmd.exe 140 times (fo each openssl call). So I think for now we just ommit the md5 fingerprints, and see if openssl will be fixed.
2010-08-18Fixed a memory leak during OOM in the multi timeout codeDan Fandrich
2010-08-18multi: avoid sending multiple complete messagesDaniel Stenberg
I fell over this bug report that mentioned that libcurl could wrongly send more than one complete messages at the end of a transfer. Reading the code confirmed this, so I've added a new multi state to make it not happen. The mentioned bug report was made by Brad Jorsch but is (oddly enough) filed in Debian's bug tracker for the "wmweather+" tool. Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593390
2010-08-18It is sufficient to pipe stderr to NUL to get rid of the nasty messages.Guenter Knauf
2010-08-18Added SSPI build to Watcom makefile.Guenter Knauf
2010-08-16progress: callback for POSTs less than MAX_INITIAL_POST_SIZEJulien Chaffraix
Add a call to Curl_pgrsSetUploadSize in this case valided by a test case. Reported by: Никита Дорохин. Bug: http://curl.haxx.se/mail/lib-2010-04/0173.html
2010-08-16negotiation: Wrong proxy authorizationDaniel Stenberg
There's an error in http_negotiation.c where a mistake is using only userpwd even for proxy requests. Ludek provided a patch, but I decided to write the fix slightly different using his patch as inspiration. Reported by: Ludek Finstrle Bug: http://curl.haxx.se/bug/view.cgi?id=3046066
2010-08-15Syncroniszed vclean target; fixed some comments.Guenter Knauf
2010-08-15multi: use timeouts properly for MAX_RECV/SEND_SPEEDDaniel Stenberg
When detecting that the send or recv speed, the multi interface changes state to TOOFAST and previously there was no timeout set that would force a recheck but it would rely on the application to somehow call libcurl anyway. This now sets a timeout for a suitable future time to check again if the average transfer speed is then below the threshold again.
2010-08-15multi: support timeoutsDaniel Stenberg
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.
2010-08-15Curl_llist_insert_next: allow insertion first in the listDaniel Stenberg
When we specify the "insert after" entry as NULL, this function now inserts the new entry first in the list.
2010-08-15multi: make curl_multi_info_read perform O(1)Daniel Stenberg
Instead of looping over all attached easy handles, this now keeps a list of messages in the multi handle. It allows curl_multi_info_read() to perform O(1) no matter how many easy handles that are handled. This is of importance since this function may be polled very frequently by apps using the multi interface.
2010-08-11Added OpenSSL builds to Watcom makefiles.Guenter Knauf
2010-08-11warning: silence the compilerDaniel Stenberg
warning: conversion to 'long int' from 'time_t' may alter its value ... on win64 when time_t is 64bit and long is 32bit.
2010-08-10callbacks: acknowledge progress callback error returnsDaniel Stenberg
When the progress callback is called during the TCP connection, an error return would accidentally not abort the operation as intended but would instead be counted as a failure to connect to that particular IP and libcurl would just continue to try the next. I made singleipconnect() and trynextip() return CURLcode properly. Added bonus: it corrected the error code for bad --interface usages, like tested in test 1084 and test 1085. Reported by: Adam Light Bug: http://curl.haxx.se/mail/lib-2010-08/0105.html
2010-08-10More Watcom makefile fixes ...Guenter Knauf
Final fix (hopefully!) for dll wlink loader; prefer faster internal rm if available.
2010-08-10Fixed my wrong edit.Guenter Knauf
2010-08-10More Watcom makefile fixes.Guenter Knauf
Added the -br switch to dynamic builds which fixes the issue I saw with curl's --version output. Added debug info and symfile for debug builds to linker opts. Added DLL loader for wlink back, but this time dependend on wlink version. Patch posted to the list by malak.jiri AT gmail.com.
2010-08-10Changed test for -u switch in order to enable other wmake switches.Guenter Knauf
The var %MAKEFLAGS is only set in 3 cases: if set as environment var or as macro definition from commandline, and either with the -u or -ms switch. Since all these cases are unlikely for the average user it should be safe to only test if %MAKEFLAGS is defined; this has the benefit that now all other switches can be used again in addition to the -u which was formerly not possible.
2010-08-10llist: hide Curl_llist_initDaniel Stenberg
Curl_llist_init is never used outside of llist.c and thus it should be static. I also removed the protos for Curl_llist_insert_prev and Curl_llist_remove_next which are functions we removed from llist.c ages ago.