summaryrefslogtreecommitdiff
path: root/lib/url.h
Commit message (Collapse)AuthorAgeFilesLines
...
* Introducing a new persistent connection caching system using "bundles".Linus Nielsen Feltzing2012-12-071-9/+0
| | | | | | | | | | | | | | | | | | | | | A bundle is a list of all persistent connections to the same host. The connection cache consists of a hash of bundles, with the hostname as the key. The benefits may not be obvious, but they are two: 1) Faster search for connections to reuse, since the hash lookup only finds connections to the host in question. 2) It lays out the groundworks for an upcoming patch, which will introduce multiple HTTP pipelines. This patch also removes the awkward list of "closure handles", which were needed to send QUIT commands to the FTP server when closing a connection. Now we allocate a separate closure handle and use that one to close all connections. This has been tested in a live system for a few weeks, and of course passes the test suite.
* non-blocking active FTP: cleanup multi state usageDaniel Stenberg2011-12-201-1/+1
| | | | | | | | | Backpedaled out the funny double-change of state in the multi state machine by adding a new argument to the do_more() function to signal completion. This way it can remain in the DO_MORE state properly until done. Long term, the entire DO_MORE logic should be moved into the FTP code and be hidden from the multi code as the logic is only used for FTP.
* fix a bunch of MSVC compiler warningsYang Tse2011-09-031-1/+2
|
* MemoryTracking: fix logging of free() calls done where Curl_safefree is calledYang Tse2011-09-021-1/+0
| | | | | | | | | | | | | | Just internal stuff... Curl_safefree is now a macro defined in memdebug.h instead of a function prototyped in url.h and implemented in url.c, so inclusion of url.h is no longer required in order to simply use Curl_safefree. Provide definition of macro WHILE_FALSE in setup_once.h in order to allow other macros such as DEBUGF and DEBUGASSERT, and code using it, to compile without 'conditional expression is constant' warnings. The WHILE_FALSE stuff fixes 150+ MSVC compiler warnings.
* stdio.h, stdlib.h, string.h, stdarg.h and ctype.h inclusion done in setup_once.hYang Tse2011-07-261-5/+3
|
* source cleanup: unify look, style and indent levelsDaniel Stenberg2011-04-271-1/+2
| | | | | By the use of a the new lib/checksrc.pl script that checks that our basic source style rules are followed.
* Fixed compilation when the synchronous resolver is usedDan Fandrich2011-04-251-2/+0
|
* async resolvers: further cleanupsDaniel Stenberg2011-04-251-1/+3
| | | | | | | | asyn-ares.c and asyn-thread.c are two separate backends that implement the same (internal) async resolver API for libcurl to use. Backend is specified at build time. The internal resolver API is defined in asyn.h for asynch resolvers.
* url: provide dead_connection flag in Curl_handler::disconnectKamil Dudka2010-12-061-1/+1
| | | | | | | It helps to prevent a hangup with some FTP servers in case idle session timeout has exceeded. But it may be useful also for other protocols that send any quit message on disconnect. Currently used by FTP, POP3, IMAP and SMTP.
* multi interface: missed storing connection timeDaniel Stenberg2010-05-071-1/+8
| | | | | | | | | | | | | | | 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.
* remove the CVSish $Id$ linesDaniel Stenberg2010-03-241-1/+0
|
* - Constantine Sapuntzakis fixed bug report #2784055Daniel Stenberg2009-05-081-0/+2
| | | | | | | | | (http://curl.haxx.se/bug/view.cgi?id=2784055) identifying a problem to connect to SOCKS proxies when using the multi interface. It turned out to almost not work at all previously. We need to wait for the TCP connect to be properly verified before doing the SOCKS magic. There's still a flaw in the FTP code for this.
* Moved Curl_strntoupper() to the rawstr.c file where the other raw stringDaniel Stenberg2009-02-071-2/+1
| | | | functions are.
* - Markus Moeller introduced two new options to libcurl:Daniel Stenberg2009-01-281-0/+1
| | | | | | | CURLOPT_SOCKS5_GSSAPI_SERVICE and CURLOPT_SOCKS5_GSSAPI_NEC to allow libcurl to do GSS-style authentication with SOCKS5 proxies. The curl tool got the options called --socks5-gssapi-service and --socks5-gssapi-nec to enable these.
* Fixed a couple more locale-dependent toupper conversions, mainly forDan Fandrich2009-01-211-0/+1
| | | | | | | | | | clarity. This does fix one problem that causes ;type=i FTP URLs to fail in the Turkish locale when CURLOPT_PROXY_TRANSFER_MODE is used (test case 561) Added tests 561 and 1092 through 1094 to test various combinations of ;type= and ;mode= URLs that could potentially fail in the Turkish locale.
* Unified much of the SessionHandle initialization done in Curl_open() andDan Fandrich2009-01-081-0/+1
| | | | | | curl_easy_reset() by creating Curl_init_userdefined(). This had the side effect of fixing curl_easy_reset() so it now also resets CURLOPT_FTP_FILEMETHOD and CURLOPT_SSL_SESSIONID_CACHE
* - Igor Novoseltsev filed bug #2351645Daniel Stenberg2008-12-031-0/+4
| | | | | | (http://curl.haxx.se/bug/view.cgi?id=2351645) that identified a problem with the multi interface that occured if you removed an easy handle while in progress and the handle was used in a HTTP pipeline.
* provide CURL_DEFAULT_PROXY_PORT set to 1080 for the default port libcurlDaniel Stenberg2008-04-051-11/+2
| | | | assumes proxies to use
* Dmitry Kurochkin worked a lot on improving the HTTP Pipelining support thatDaniel Stenberg2008-01-161-3/+2
| | | | | | | previously had a number of flaws, perhaps most notably when an application fired up N transfers at once as then they wouldn't pipeline at all that nicely as anyone would think... Test case 530 was also updated to take the improved functionality into account.
* Michal Marek forwarded the bug reportDaniel Stenberg2007-10-221-0/+5
| | | | | | | | | | | | | | | https://bugzilla.novell.com/show_bug.cgi?id=332917 about a HTTP redirect to FTP that caused memory havoc. His work together with my efforts created two fixes: #1 - FTP::file was moved to struct ftp_conn, because is has to be dealt with at connection cleanup, at which time the struct HandleData could be used by another connection. Also, the unused char *urlpath member is removed from struct FTP. #2 - provide a Curl_reset_reqproto() function that frees data->reqdata.proto.* on connection setup if needed (that is if the SessionHandle was used by a different connection).
* Enabled a few more gcc warnings with --enable-debug. Renamed a fewDan Fandrich2007-09-271-3/+3
| | | | variables to avoid shadowing global declarations.
* Patrick Monnerat and I modified libcurl so that now it *copies* all stringsDaniel Stenberg2007-08-011-0/+2
| | | | | | | passed to it with curl_easy_setopt()! Previously it has always just refered to the data, forcing the user to keep the data around until libcurl is done with it. That is now history and libcurl will instead clone the given strings and keep private copies.
* Fixed an out of memory handling issue with HTTP pipelines.Dan Fandrich2007-05-021-2/+2
|
* fogot to change Curl_mk_connc in header fileYang Tse2007-02-011-1/+1
|
* update copyright year noticeYang Tse2007-01-271-1/+1
|
* - Armel Asselin improved libcurl to behave a lot better when an easy handleDaniel Stenberg2007-01-161-1/+1
| | | | | | doing an FTP transfer is removed from a multi handle before completion. The fix also fixed the "alive counter" to be correct on "premature removal" for all protocols.
* Jared Lundell filed bug report #1604956Daniel Stenberg2006-12-051-1/+1
| | | | | | (http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl will always internally use no less than 1 entry in the connection cache.
* Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to testDaniel Stenberg2006-10-091-2/+2
| | | | | case 535 and it now runs fine. Again a problem with the pipelining code not taking all possible (error) conditions into account.
* Resize the connection cache upwards when adding more handles than whatDaniel Stenberg2006-09-161-0/+4
| | | | | currently fits in the cache, to make the cache work better especially for pipelining cases but also for "mere" (persistent) connection re-use.
* file-local function should be static and not use Curl_ prefix!Daniel Stenberg2006-09-151-1/+0
| | | | Curl_signalPipeClose is now signalPipeClose().
* Major overhaul introducing http pipelining support and shared connectionDaniel Stenberg2006-09-071-1/+15
| | | | cache within the multi handle.
* First curl_multi_socket() commit. Should primarily be considered as an internalDaniel Stenberg2006-04-101-0/+12
| | | | code rearrange to fit the future better.
* Simplified the code within curl_easy_perform() that calls Curl_perform().Daniel Stenberg2005-07-171-1/+4
| | | | Pointed out by Bjorn Reese.
* GnuTLS support added. There's now a "generic" SSL layer that we use all overDaniel Stenberg2005-04-071-5/+0
| | | | | | | | | | | | internally, with code provided by sslgen.c. All SSL-layer-specific code is then written in ssluse.c (for OpenSSL) and gtls.c (for GnuTLS). As far as possible, internals should not need to know what SSL layer that is in use. Building with GnuTLS currently makes two test cases fail. TODO.gnutls contains a few known outstanding issues for the GnuTLS support. GnuTLS support is enabled with configure --with-gnutls
* FTP code turned into state machine. Not completely yet, but a good start.Daniel Stenberg2005-02-091-5/+16
| | | | | The tag 'before_ftp_statemachine' was set just before this commit in case of future need.
* I made Curl_done() take a pointer-pointer in the first argument instead, andDaniel Stenberg2004-05-171-6/+6
| | | | | if the connection is killed it blanks the pointer it points to, to make it easier to detect usage problems whereever Curl_done() is used.
* Curl_done() and the protocol-specific conn->curl_done() functions now allDaniel Stenberg2004-05-121-1/+1
| | | | | take a CURLcode as a second argument, that is non-zero when Curl_done() is called after an error was returned from Curl_do() (or similar).
* Major hostip.c cleanup and split into multiple files and easier #ifdefDaniel Stenberg2004-04-261-2/+1
| | | | usage.
* updated year in the copyright stringDaniel Stenberg2004-01-071-1/+1
|
* ares awareness/usage/support added. If configure --enable-ares is used, weDaniel Stenberg2003-08-051-1/+3
| | | | build libcurl to use ares for asynch name resolves.
* moved the proxyuser and proxypasswd fields from the sessionhandle to theDaniel Stenberg2003-07-211-0/+1
| | | | connectdata to work as expected
* Fixup after talks with Richard Bramante. We should now make betterDaniel Stenberg2003-03-311-0/+5
| | | | comparisons before re-using SSL connections and re-using SSL connection IDs.
* copyright year update in the source headerDaniel Stenberg2003-01-161-1/+1
|
* Curl_resolv() now returns a different struct, and it contains a referenceDaniel Stenberg2002-11-051-1/+1
| | | | | | | | counter so that the caller needs to decrease that counter when done with the returned data. If compiled with MALLOCDEBUG I've added some extra checking that the counter is decreased before a handle is closed etc.
* updated source code boilerplate/headerDaniel Stenberg2002-09-031-7/+7
|
* Initial fix to make the multi interface return control while waiting forDaniel Stenberg2002-08-121-1/+3
| | | | | | | the initial connect to "come through". This should work fine for connect and for FTP-PASV connects. Needs massive testing.
* copyright string (year) updateDaniel Stenberg2002-03-191-1/+1
|
* merged the multi-dev branch back into MAIN againDaniel Stenberg2002-01-031-6/+4
|
* Major rename and redesign of the internal "backbone" structs. Details willDaniel Stenberg2001-08-301-4/+4
| | | | be posted in a minute to the libcurl list.
* moved the url.c prototypes to hereDaniel Stenberg2001-08-151-1/+13
|