Linus Nielsen Feltzing
d021f2e8a0
Introducing a new persistent connection caching system using "bundles".
...
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.
2012-12-07 10:08:33 +01:00
Yang Tse
996f2454ba
hash.c: fix OOM triggered segfault
2011-12-25 11:35:45 +01:00
Yang Tse
584dc8b8af
OOM handling/cleanup slight adjustments
2011-10-11 19:41:30 +02:00
Yang Tse
17f48fe879
libcurl: some OOM handling fixes
2011-10-07 20:50:57 +02:00
Yang Tse
f1586cb477
stdio.h, stdlib.h, string.h, stdarg.h and ctype.h inclusion done in setup_once.h
2011-07-26 17:23:27 +02:00
Daniel Stenberg
0f7bea7c3a
unittest: mark all unit tested functions
...
With "@unittest: [num]" in the header comment for each tested function.
Shows we have a log way to go still...
2011-06-10 14:40:46 +02:00
Daniel Stenberg
b903186fa0
source cleanup: unify look, style and indent levels
...
By the use of a the new lib/checksrc.pl script that checks that our
basic source style rules are followed.
2011-04-27 09:09:35 +02:00
Daniel Stenberg
2309b4e330
remove the CVSish $Id$ lines
2010-03-24 11:02:54 +01:00
Daniel Stenberg
fb5f332834
- Constantine Sapuntzakis posted bug #2891595
...
(http://curl.haxx.se/bug/view.cgi?id=2891595 ) which identified how an entry
in the DNS cache would linger too long if the request that added it was in
use that long. He also provided the patch that now makes libcurl capable of
still doing a request while the DNS hash entry may get timed out.
2009-11-11 09:31:37 +00:00
Yang Tse
2c16681225
Adjusted to take in account that...
...
With the curl memory tracking feature decoupled from the debug build feature,
CURLDEBUG and DEBUGBUILD preprocessor symbol definitions are used as follows:
CURLDEBUG used for curl debug memory tracking specific code (--enable-curldebug)
DEBUGBUILD used for debug enabled specific code (--enable-debug)
2009-06-10 02:49:42 +00:00
Yang Tse
33a3753c3f
libcurl's memory.h renamed to curl_memory.h
2009-04-21 11:46:16 +00:00
Yang Tse
e29f62f0a7
add null-pointer check
2008-10-27 05:29:17 +00:00
Yang Tse
417bac4055
add missing header inclusions
2008-10-25 16:15:21 +00:00
Daniel Stenberg
b701ea36a7
moved the Curl_raw_ functions into the new lib/rawstr.c file for easier curlx_
...
inclusion by the curl tool without colliding with the curl_strequal functions.
2008-10-23 11:49:19 +00:00
Yang Tse
6bd91936ff
remove debug-code which zero-filled some structures before free()ing them
2008-10-20 23:24:35 +00:00
Yang Tse
b416b87518
oops
2008-10-19 20:41:03 +00:00
Yang Tse
5779283a52
attempt to fix or allow further detection of an elusive icc SIGSEGV
2008-10-19 20:17:16 +00:00
Yang Tse
59e378f48f
remove unnecessary typecasting of malloc()
2008-09-06 05:29:05 +00:00
Daniel Stenberg
cbd1a77ec2
if () => if()
...
while () => while()
and some other minor re-indentings
2007-11-07 09:21:35 +00:00
Dan Fandrich
ad05b22de3
Renamed a few variables to avoid shadowing global declarations.
2007-09-27 18:12:03 +00:00
Dan Fandrich
1b66c1da6c
Added lots of consts
2007-08-29 05:36:53 +00:00
Daniel Stenberg
62f0f5571d
Robert Iakobashvili re-arranged the internal hash code to work with a custom
...
hash function for different hashes, and also expanded the default size for
the socket hash table used in multi handles to greatly enhance speed when
very many connections are added and the socket API is used.
2007-06-26 21:09:28 +00:00
Daniel Stenberg
f2a33eb372
Added a useful debug function within #if 0. The function makes it easy to
...
"dump" a hash table which is useful when tracking problems with data stored
in one of our hashes.
2006-09-10 22:12:24 +00:00
Daniel Stenberg
686d90745b
First curl_multi_socket() commit. Should primarily be considered as an internal
...
code rearrange to fit the future better.
2006-04-10 15:00:53 +00:00
Daniel Stenberg
043d70fcdf
Use plain structs and not typedef'ed ones in the hash and linked-list code.
2005-01-25 00:06:29 +00:00
Daniel Stenberg
c39858aac0
Source cleanups. The major one being that we now _always_ use a Curl_addrinfo
...
linked list for name resolved data, even on hosts/systems with only IPv4
stacks as this simplifies a lot of code.
2004-06-24 07:43:48 +00:00
Daniel Stenberg
bbafb2eb27
curl_global_init_mem() allows the memory functions to be replaced.
...
memory.h is included everywhere for this.
2004-05-11 11:30:23 +00:00
Daniel Stenberg
887d78a9ad
Curl_hash_add() was modified to clear up better in case of internal failure.
...
When failing, it should not tamper at all with the data it was supposed to
add to the cache.
2004-05-10 09:17:50 +00:00
Daniel Stenberg
e64dacb40e
better checking that strdup() works
2004-05-10 08:57:18 +00:00
Daniel Stenberg
4250637e7d
improved the cleaning up of memory when we fail to resolve names due to
...
out of memory (thanks to 'runtests.pl -t')
2004-05-04 13:40:30 +00:00
Daniel Stenberg
053f6c85ef
updated year in the copyright string
2004-01-07 09:19:33 +00:00
Daniel Stenberg
947e656367
make sure that hash_add() has no allocated resources left in case it
...
returns NULL
2003-12-15 15:21:13 +00:00
Daniel Stenberg
14597475b1
Jeff Pohlmeyer did some marvelous debugging to track this one down. We MUST
...
NOT free the existing hash entry when we try to add a new one that matches
an existing entry. We now instead free the new one, and make the parent
function use the old entry's struct instead.
2003-09-14 21:17:54 +00:00
Daniel Stenberg
adcbe03aeb
Uses less macros. #ifdef'ed out unused functions. Edited slightly to be
...
more in the same style as other curl source code. The only actual code change
is an added check after a malloc() call.
2003-09-05 12:44:35 +00:00
Daniel Stenberg
905b160097
1. check allocs
...
2. don't leave allocated memory behind when returning error
2003-08-14 15:05:13 +00:00
Daniel Stenberg
308bc9d919
use CURLDEBUG instead of MALLOCDEBUG for preprocessor conditions
2003-06-26 11:22:12 +00:00
Daniel Stenberg
409ac80710
removed weirdo {{{ and }}} comments
...
removed emacs local-variables stuff
2003-01-29 10:12:06 +00:00
Daniel Stenberg
f26a338a54
copyright year update in the source header
2003-01-16 21:08:12 +00:00
Daniel Stenberg
2cff251863
Curl_resolv() now returns a different struct, and it contains a reference
...
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.
2002-11-05 10:51:41 +00:00
Daniel Stenberg
ba4e69bebc
updated source code boilerplate/header
2002-09-03 11:52:59 +00:00
Daniel Stenberg
1c42779845
DNC cache prune crash removed, made the name spacing follow the general
...
rule: "Curl_" prefix for library-wide private symbols, "curl_" is for
exported symbols.
2002-04-27 13:06:40 +00:00
Sterling Hughes
a386562d9a
Prune old hostcache entries with each call...
...
This can be optimized a tidbit, but this is a start.
2002-04-17 20:13:55 +00:00
Sterling Hughes
bb44791bf3
Add protos and change return value of curl_hash_count....
2002-04-13 01:56:22 +00:00
Sterling Hughes
9ebcfe9dff
Speed up the hash code considerably, removing a bunch of legacy crud
2002-04-12 23:40:19 +00:00
Daniel Stenberg
974f314f57
copyright string (year) update
2002-03-19 07:54:55 +00:00
Daniel Stenberg
e452f467d4
Philip Gladstone's 64-bit issues corrected.
...
Reminder for the future: when we're using malloc() we MUST include <stdlib.h>
as otherwise 64bit archs go bananas.
Bug report #517687
2002-02-17 14:55:35 +00:00
Daniel Stenberg
7bfe853af3
I wish I could type. Anyway, this proved it is a good habit to put the NULL
...
on the left side of comparisons...
2002-01-18 10:36:25 +00:00
Daniel Stenberg
cbaecca8e9
added typecast for a malloc() return, and added check for NULL
2002-01-18 10:30:51 +00:00
Sterling Hughes
8d7f402efb
Make cach'ing work with threads now, there are now three cases:
...
- Use a global dns cache (via setting the tentatively named,
CURLOPT_DNS_USE_GLOBAL_CACHE option to true)
- Use a per-handle dns cache, by default
- Use a pooled dns cache when in the "multi" interface
2002-01-07 20:52:32 +00:00
Daniel Stenberg
6de7dc5879
Sterling Hughes' provided initial DNS cache source code.
2002-01-03 10:22:59 +00:00