Thomas Lopatic
6657f12fff
fix the alarm()-based DNS timeout
...
Looking at the code of Curl_resolv_timeout() in hostip.c, I think
that in case of a timeout, the signal handler for SIGALRM never
gets removed. I think that in my case it gets executed at some
point later on when execution has long left Curl_resolv_timeout()
or even the cURL library.
The code that is jumped to with siglongjmp() simply sets the
error message to "name lookup timed out" and then returns with
CURLRESOLV_ERROR. I guess that instead of simply returning
without cleaning up, the code should have a goto that jumps to
the spot right after the call to Curl_resolv().
2010-03-22 21:57:48 +01:00
Yang Tse
597ad5a2ce
adjust preprocessor symbol definition check relative to resolver specialty
2010-01-23 13:53:33 +00:00
Daniel Stenberg
33ce0ec1f1
wrap long lines and do some indent policing
2010-01-22 23:21:39 +00:00
Yang Tse
bfc4c33985
Constantine Sapuntzakis refactoring of async callbacks, allowing
...
removal of Curl_addrinfo_copy(), Curl_addrinfo6_callback(), and
Curl_addrinfo4_callback()
2010-01-22 06:36:52 +00:00
Yang Tse
3184a91ec8
VMS specific preprocessor symbol checking adjustments
2009-12-30 17:59:56 +00:00
Yang Tse
59939313f8
Make usage of calloc()'s arguments consistent with rest of code base
2009-11-18 10:33:54 +00:00
Yang Tse
05a4abea04
Constantine Sapuntzakis patch for hostip.c
...
No need for a separate variable ndns.
The memory leak detection will detect code that fails to release a dns reference.
The DEBUGASSERT will detect code that releases too many references.
2009-11-12 19:28:43 +00:00
Yang Tse
668dc0ad87
Make hostip.c compile again
2009-11-12 04:32:08 +00: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
Daniel Stenberg
7e07da977c
- Peter Sylvester made a debug featuer for Curl_resolv() that now will force
...
libcurl to resolve 'localhost' whatever name you use in the URL *if* you set
the --interface option to (exactly) "LocalHost". This will enable us to
write tests for custom hosts names but still use a local host server.
2009-09-01 14:27:01 +00:00
Yang Tse
33a3753c3f
libcurl's memory.h renamed to curl_memory.h
2009-04-21 11:46:16 +00:00
Yang Tse
9770899a4b
Moved potential inclusion of system's malloc.h and memory.h header files to
...
setup_once.h. Inclusion of each header file is based on the definition of
NEED_MALLOC_H and NEED_MEMORY_H respectively.
2009-04-21 10:26:58 +00:00
Yang Tse
a0ef686c54
Merged existing IPv4 and IPv6 Curl_ip2addr functions into a single one
...
which now also takes a protocol address family argument.
2008-11-06 17:19:56 +00:00
Yang Tse
0ce97f77e0
Use our Curl_addrinfo definition even when an addrinfo struct is available.
...
Use a wrapper function to call system's getaddrinfo().
2008-10-30 13:45:25 +00:00
Yang Tse
6983ba3225
*** empty log message ***
2008-10-20 23:05:52 +00:00
Yang Tse
b843c27322
fix compiler warning
2008-10-19 22:46:54 +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
29ba1730ca
attempt to fix compiler warning relative to potential misaligned data access
2008-10-19 01:02:18 +00:00
Dan Fandrich
feff911fb7
Removed a line of dead code (discovered by Coverity)
2008-10-18 01:17:27 +00:00
Yang Tse
8254bbae56
protect against 'use after free' or race condition
2008-10-17 15:29:35 +00:00
Yang Tse
4acbe8f20c
fix compiler warning
2008-10-17 12:53:53 +00:00
Yang Tse
2ea70a5c73
OOM condition fix
2008-10-17 12:49:02 +00:00
Yang Tse
d6114165d3
attempt to fix or allow further detection of an elusive icc SIGSEGV
2008-10-13 06:23:42 +00:00
Yang Tse
c455254fd1
attempt to fix or allow further detection of an elusive icc SIGSEGV
2008-10-10 17:25:53 +00:00
Yang Tse
aec761916e
fix another error introduced in previously mentioned commit
2008-10-03 02:25:52 +00:00
Yang Tse
7d750d2b92
fix error introduced in previous commit
2008-10-03 00:35:22 +00:00
Yang Tse
bdf1724412
take 2 at fixing compiler warning: argument might be clobbered by longjmp' or
vfork'
2008-10-02 22:58:09 +00:00
Yang Tse
26a651f7ae
fix compiler warning: variable' might be clobbered by
longjmp' or `vfork'
2008-10-02 13:28:10 +00:00
Dan Fandrich
88513d2d1a
Fixed some compiler warnings with gcc
2008-10-01 17:34:24 +00:00
Dan Fandrich
4114129ac0
Fixed a couple of compile warnings.
2008-09-29 23:45:43 +00:00
Dan Fandrich
4adcf7e9ed
Moved all signal-based name resolution timeout handling into a single new
...
Curl_resolv_timeout function to reduce coupling.
2008-09-29 21:02:22 +00:00
Yang Tse
4e909ee8b1
ntoa() and inet_ntoa_r() no longer used
2008-09-24 12:22:16 +00:00
Yang Tse
a622fd90b4
remove unnecessary typecasting of calloc()
2008-09-06 04:47:14 +00:00
Dan Fandrich
0994d7811f
Removed some redundant type casts
2008-09-02 18:36:39 +00:00
Daniel Stenberg
0cd8840dba
- Andreas Schuldei improved Phil Blundell's patch for IPv6 using c-ares, and I
...
edited it slightly. Now you should be able to use IPv6 addresses fine even
with libcurl built to use c-ares.
2008-07-09 18:39:49 +00:00
Daniel Stenberg
b9d66dca51
- Dmitry Popov filed bug report #1911069
...
(http://curl.haxx.se/bug/view.cgi?id=1911069 ) that identified a race
condition in the name resolver code when the DNS cache is shared between
multiple easy handles, each running in simultaneous threads that could cause
crashes.
2008-03-11 22:55:23 +00:00
Daniel Stenberg
991505e077
Woops, partly revert my previous commit and do it slightly differently instead.
...
The signalling of that a global DNS cache is wanted is done by setting the
option but the setting of the internal variable that it is in use must not be
done until it finally actually gets used!
NOTE and WARNING: I noticed that you can't actually switch off the global dns
cache with CURLOPT_DNS_USE_GLOBAL_CACHE but you couldn't do that previously
either and the option is very clearly and loudly documented as DO NOTE USE so
I won't bother to fix this bug now.
2008-01-15 22:44:12 +00:00
Daniel Stenberg
56f17d2c9f
I made the torture test on test 530 go through. This was actually due to
...
silly code left from when we switched to let the multi handle "hold" the dns
cache when using the multi interface... Of course this only triggered when a
certain function call returned error at the correct moment.
2008-01-15 22:15:55 +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
8388366849
Renamed a variable to avoid shadowing a global declarations.
2007-09-28 18:47:59 +00:00
Dan Fandrich
523767660c
Fixed some minor mismatched types found by splint.
2007-08-26 05:53:26 +00:00
Daniel Stenberg
54967d2a3a
Thomas J. Moore provided a patch that introduces Kerberos5 support in
...
libcurl. This also makes the options change name to --krb (from --krb4) and
CURLOPT_KRBLEVEL (from CURLOPT_KRB4LEVEL) but the old names are still
2007-07-01 22:01:18 +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
Yang Tse
94b253fde7
Steve Little's fixes to allow compilation on VMS 64-bit mode
2007-04-25 03:00:10 +00:00
Gisle Vanem
c514a2a89a
Removed inclusion of <sys/types.h> and <sys/stat.h> in .c-files
...
since they're already included through "setup.h".
2007-02-26 04:24:26 +00:00
Yang Tse
3a634a273a
curlassert macro replaced with DEBUGASSERT macro defined in setup_once.h
2007-02-21 19:03:20 +00:00
Dan Fandrich
77516822f6
Workaround for Cray UNICOS 9.0 to fix ftp.
2006-08-21 22:28:19 +00:00
Dan Fandrich
839441e236
Minor portability fixes to get things running on UNICOS 9.0 on a Cray Y-MP
2006-08-16 18:48:27 +00:00
Yang Tse
ecfaa4f869
Fix warning: no newline at end of file
2006-07-25 18:48:12 +00:00
Yang Tse
13616f8f96
Simplify check for NEED_MALLOC_H, and make more explicit that NEED_MALLOC_H shall be defined if <malloc.h> header file must be included even when including <stdlib.h>.
2006-07-25 13:49:49 +00:00
Gisle Vanem
e4d6ade4b3
Moved functions common to IPv4 and C-ares to hostip.c;
...
Curl_freeaddrinfo() and Curl_ip2addr().
2006-07-25 10:31:31 +00:00
Gisle Vanem
c82e880f5b
Remove comment about c-ares not supporting IPv6.
2006-07-25 10:23:15 +00:00
Gisle Vanem
5cdbd0cf4a
Constify arguments to Curl_he2ai() and Curl_addrinfo_copy().
2006-07-21 06:21:46 +00:00
Gisle Vanem
a55c70d4ae
Constify 'hostname' and 'service' to various resolver functions.
2006-07-21 05:51:12 +00:00
Yang Tse
fe22872d14
include <malloc.h> only if HAVE_MALLOC_H and NEED_MALLOC_H are both defined.
2006-07-11 21:34:23 +00:00
Daniel Stenberg
ca319f63ad
Ingmar Runge provided a source snippet that caused a crash. The reason for
...
the crash was that libcurl internally was a bit confused about who owned the
DNS cache at all times so if you created an easy handle that uses a shared
DNS cache and added that to a multi handle it would crash. Now we keep more
careful internal track of exactly what kind of DNS cache each easy handle
uses: None, Private (allocated for and used only by this single handle),
Shared (points to a cache held by a shared object), Global (points to the
global cache) or Multi (points to the cache within the multi handle that is
automatically shared between all easy handles that are added with private
caches).
2006-07-07 22:58:06 +00:00
Daniel Stenberg
e85e30546c
Roland Blom filed bug report #1481217
...
(http://curl.haxx.se/bug/view.cgi?id=1481217 ), with follow-ups by Michele Bini
and David Byron. libcurl previously wrongly used GetLastError() on windows to
get error details after socket-related function calls, when it really should
use WSAGetLastError() instead.
When changing to this, the former function Curl_ourerrno() is now instead
called Curl_sockerrno() as it is necessary to only use it to get errno from
socket-related functions as otherwise it won't work as intended on Windows.
2006-05-04 22:39:47 +00:00
Gisle Vanem
3cbb1b2b64
Use the HAVE_MALLOC_H and HAVE_PROCESS_H defines
...
(more logical).
2006-04-26 17:23:28 +00:00
Daniel Stenberg
92009181af
Shmulik Regev provided a fix for the DNS cache when using short life times,
...
as previously it could be holding on to old cached entries longer than
requested.
2006-02-16 23:42:32 +00:00
Daniel Stenberg
5f0366c2cb
only define _REENTRANT if not already defined, and only in setup.h
2005-04-19 23:19:23 +00:00
Daniel Stenberg
6a2e21ec8c
FTP code turned into state machine. Not completely yet, but a good start.
...
The tag 'before_ftp_statemachine' was set just before this commit in case
of future need.
2005-02-09 13:06:40 +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
dcea109bb5
Dan Fandrich fix: eliminates some pedantic CodeWarrior compiler warnings and
...
errors.
2004-11-18 14:04:40 +00:00
Daniel Stenberg
6d1b37b3da
Prevent a longjmp warning by moving the rc assign within Curl_resolv().
...
Andy Cedilnik reported. Warning on HP-UX?
2004-10-10 03:32:01 +00:00
Daniel Stenberg
39af394a1c
removed tabs and trailing whitespace from source
2004-10-06 07:50:18 +00:00
Daniel Stenberg
95def48071
Made the dns entry remain locked while a connection to the host remains to
...
allow verbose output during this period. Bertrand Demiddelaer reported and
helped fixing.
2004-10-04 10:36:51 +00:00
Daniel Stenberg
f2a99d7d74
the _num_chars() function is not used, removing
2004-06-24 15:05:39 +00:00
Daniel Stenberg
feb2dd2835
Replaced all uses of sprintf() with the safer snprintf(). It is just a
...
precaution to prevent mistakes to lead to buffer overflows.
2004-06-24 11:54:11 +00:00
Daniel Stenberg
5e34f3dc01
made the Curl_he2ai() take the port number as an int intead, to avoid lots
...
of typecasts all over
2004-06-24 10:43:50 +00:00
Daniel Stenberg
560c257bd0
prevent warning
2004-06-24 08:08:28 +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
8d76d4016d
removed trailing whitespace
2004-06-10 11:56:02 +00:00
Daniel Stenberg
9f92657f76
Gisle corrected two comments
2004-06-10 11:55:37 +00:00
Daniel Stenberg
9f341f9ce5
Gisle Vanem's improved verbose output and timeout handling when connecting to
...
a host name that resolves to multiple IP addresses.
2004-06-10 11:06:21 +00:00
Daniel Stenberg
e9056f5f95
if shrinking the buffer fails, use the older larger one
2004-05-17 22:07:43 +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
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
245e3122df
Made defines instead of plain numbers for the Curl_resolv() return code to
...
make the code easier to read
2004-04-26 14:18:00 +00:00
Daniel Stenberg
648e82f05d
Major hostip.c cleanup and split into multiple files and easier #ifdef
...
usage.
2004-04-26 07:20:11 +00:00
Daniel Stenberg
3755bffcc2
Gisle Vanem found and fixed a memory leak when doing (failing) Windows
...
threaded name resolves.
2004-04-23 14:04:30 +00:00
Daniel Stenberg
62b7c08bb3
include unistd.h as well for the close() proto on some platforms (like Tru64)
2004-04-21 11:18:42 +00:00
Daniel Stenberg
dc25cd6f3a
cleanup leftovers
2004-04-20 09:46:10 +00:00
Daniel Stenberg
68e8a0f0d9
asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will
...
now cause the resolve function to return NULL immediately
2004-04-14 12:10:44 +00:00
Daniel Stenberg
1d0b5b507a
Curl_wait_for_resolv() could hang due to the bad timeout timer resolution and
...
some bad thinking on my part.
2004-04-14 11:43:26 +00:00
Daniel Stenberg
31a693b99a
Gisle Vanem's fix that makes the multi interface work on Windows again even
...
when not using ares.
2004-04-13 13:59:12 +00:00
Daniel Stenberg
eb6345de60
somewhat safer typecasting in case sizeof(long) != sizeof(void *) (is there
...
even such platforms?)
2004-04-12 06:55:25 +00:00
Daniel Stenberg
5ca47f19d7
the pack_hostent() proto isn't used/needed with ipv6 is enabled.
...
time to restructure this source file!
2004-04-06 15:09:43 +00:00
Daniel Stenberg
9044fcbb5f
Gisle Vanem's fix for bug item #927979 reported by Nathan O'Sullivan.
...
Good enough?
2004-04-06 14:51:14 +00:00
Daniel Stenberg
ad9e83a90f
Dirk Manske's fix that makes sure we cancel the ares resolve when we time out
...
from a name resolve. Without this, we leak memory!
2004-04-01 08:40:36 +00:00
Daniel Stenberg
675db3a211
removed my previously attempted fix for ares timeouts, not needed
2004-04-01 07:04:58 +00:00
Daniel Stenberg
ee1595dcd5
Roy Shan fixed a case that prevented ares name resolve timeouts to occur.
2004-03-31 20:50:01 +00:00
Daniel Stenberg
9d0330d5bd
Remove the elapsed time from the most recent select() only.
2004-03-31 13:19:41 +00:00
Daniel Stenberg
d5074f74bb
The asynch name resolve methods now all use CURL_TIMEOUT_RESOLVE for
...
the specific time to wait for a resolve. The definition is at the top of
this source file.
2004-03-31 12:55:24 +00:00
Daniel Stenberg
ea0cf7c87b
Dirk Manske found out the Curl_wait_for_resolv() timed out too early.
2004-03-31 12:45:26 +00:00
Daniel Stenberg
b8b8473b6d
Lots of comments added an clarified. Added timeout for the ares version
...
of Curl_is_resolved() to address Roy Shan's reported problem.
2004-03-30 13:02:07 +00:00
Daniel Stenberg
dc46f535ae
The select() timeout is better not static since some implementation actually
...
might change it. I don't *think* it does it when the timeout is 0,0 but it
is better to be sure...
2004-03-29 21:29:24 +00:00
Daniel Stenberg
5b55f9ecb3
Günter Knauf's NetWare changes.
2004-03-17 12:46:42 +00:00
Daniel Stenberg
47afa058a8
store times in time_t
2004-03-10 09:36:43 +00:00
Daniel Stenberg
52d85341ae
only build with the windows threading trace code if
...
DEBUG_THREADING_GETHOSTBYNAME is defined
2004-03-09 21:42:43 +00:00
Daniel Stenberg
9116dd41bd
tv_sec is an int, so we explicitly typecast the result of long - long to
...
an int when we assign it.
2004-03-03 13:07:32 +00:00