Commit Graph

122 Commits

Author SHA1 Message Date
Yang Tse db23538898 George Neill's fix acountry sample application compilation failure. 2008-08-25 03:44:43 +00:00
Yang Tse 423a18cecc Brad House's validation that DNS response address matches the request address 2008-08-25 03:34:50 +00:00
Daniel Stenberg 931fc45f05 - Fix by Tofu Linden:
The symptom:
  * Users (usually, but not always) on 2-Wire routers and the Comcast service
  and a wired connection to their router would find that the second and
  subsequent DNS lookups from fresh processes using c-ares to resolve the same
  address would cause the process to never see a reply (it keeps polling for
  around 1m15s before giving up).

  The repro:
  * On such a machine (and yeah, it took us a lot of QA to find the systems
  that reproduce such a specific problem!), do 'ahost www.secondlife.com',
  then do it again.  The first process's lookup will work, subsequent lookups
  will time-out and fail.

  The cause:
  * init_id_key() was calling randomize_key() *before* it initialized
  key->state, meaning that the randomness generated by randomize_key() is
  immediately overwritten with deterministic values. (/dev/urandom was also
  being read incorrectly in the c-ares version we were using, but this was
  fixed in a later version.)
  * This makes the stream of generated query-IDs from any new c-ares process
  be an identical and predictable sequence of IDs.
  * This makes the 2-Wire's default built-in DNS server detect these queries
  as probable-duplicates and (erroneously) not respond at all.
2008-08-04 20:23:12 +00:00
Yang Tse b4fdccf87a Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use.
Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. But,
autoconf 2.62 version of AC_AIX defines _ALL_SOURCE along with other four
preprocessor symbols no matter if the system is AIX or not. To keep the
traditional behaviour, as well as an uniform one, across autoconf versions
AC_AIX is replaced with our own internal macro.
2008-08-04 06:48:11 +00:00
Yang Tse 5cff8124b0 Sync up with reality 2008-08-01 03:10:54 +00:00
Yang Tse bffe69a151 when recvfrom prototype uses a void pointer for arguments 2, 5 or 6 this will
now cause the definition of RECVFROM_TYPE_ARG2_IS_VOID, RECVFROM_TYPE_ARG5_IS_VOID
or RECVFROM_TYPE_ARG6_IS_VOID, as appropriate.
2008-07-21 00:36:55 +00:00
Yang Tse 39f23aec6b RECVFROM_TYPE_ARG2, RECVFROM_TYPE_ARG5 and RECVFROM_TYPE_ARG6 are now defined
to the data type pointed by its respective argument and not the pointer type.
2008-07-17 03:07:54 +00:00
Yang Tse a9dc900515 Configure process now checks availability of recvfrom() socket function and
finds out its return type and the types of its arguments. Added definitions
for non-configure systems config files, and introduced macro sreadfrom which
will be used on udp sockets as a recvfrom() wrapper.
2008-07-16 19:16:41 +00:00
Yang Tse 2cfb8a2bf0 Improved configure detection of number of arguments for getservbyport_r 2008-07-16 12:26:09 +00:00
Yang Tse 21ee1c2d01 Allow --enable-largefile and --disable-largefile configurations.
Configure process no longer needs nor checks size of curl_off_t.
Library will now be built with _REENTRANT symbol defined.
2008-07-15 16:43:39 +00:00
Daniel Stenberg e3b5673e98 - Phil Blundell: If you ask ares_gethostbyname() to do an AF_INET6 lookup and
the target host has only A records, it automatically falls back to an
  AF_INET lookup and gives you the A results.  However, if the target host has
  a CNAME record, this behaviour is defeated since the original query does
  return some data even though ares_parse_aaa_reply() doesn't consider it
  relevant. Here's a small patch to make it behave the same with and without
  the CNAME.
2008-07-03 11:32:35 +00:00
Yang Tse 97333deb3f fallback to gettimeofday when monotonic clock is unavailable at run-time 2008-07-02 03:04:56 +00:00
Daniel Stenberg 67f139e016 - As was pointed out to me by Andreas Schuldei, the MAXHOSTNAMELEN define is
not posix or anything and thus c-ares failed to build on hurd (and possibly
  elsewhere). The define was also somewhat artificially used in the windows
  port. Now, I instead rewrote the use of gethostbyname to enlarge the host
  name buffer in case of need and totally avoid the use of the MAXHOSTNAMELEN
  define. I thus also removed the defien from the namser.h file where it was
  once added for the windows build.

  I also fixed init_by_defaults() function to not leak memory in case if
  error.
2008-06-30 12:48:25 +00:00
Yang Tse 6cd007838d fix pkg-config reporting of private libraries needed for static linking 2008-06-09 01:06:48 +00:00
Yang Tse e5f0c38fa9 Brad House fixed a missing header file inclusion in adig sample program 2008-05-30 15:26:42 +00:00
Daniel Stenberg 1806879bb2 1.5.2 2008-05-29 20:10:40 +00:00
Daniel Stenberg 76c251513e - Introducing millisecond resolution support for the timeout option. See
ares_init_options()'s ARES_OPT_TIMEOUTMS.
2008-05-13 20:48:48 +00:00
Yang Tse d708ef6731 Use monotonic time source if available. 2008-05-09 16:30:24 +00:00
Daniel Stenberg 836fa69e2e - Sebastian made c-ares able to return all PTR-records when doing reverse
lookups. It is not common practice to have multiple PTR-Records for a single
  IP, but its perfectly legal and some sites have those.
2008-05-07 21:20:45 +00:00
Daniel Stenberg 9026dc2da4 - Doug Goldstein provided a configure patch: updates autoconf 2.13 usage to
autoconf 2.57 usage (which is the version you have specified as the minimum
  version). It's a minor change but it does clean up some warnings with newer
  autoconf (specifically 2.62).
2008-05-07 21:16:06 +00:00
Yang Tse a60c9ef88e Improved parsing of resolver configuration files 2008-05-05 17:48:25 +00:00
Daniel Stenberg 12a90289ed - Alexey Simak fixed the VC dsp file by adding the missing source file
ares_expand_string.c
2008-04-04 20:26:06 +00:00
Daniel Stenberg 592697583d Alexey Simak made adig support NAPTR records 2008-04-04 20:24:41 +00:00
Daniel Stenberg b50a96982e Eino Tuominen improved the code when a file is used to seed the randomizer 2008-04-04 20:05:23 +00:00
Gisle Vanem e3c5f8374b Added acountry.c. 2007-12-11 17:26:07 +00:00
Daniel Stenberg a1772ca406 Erik Kline cleaned up ares_gethostbyaddr.c:next_lookup() somewhat 2007-12-03 10:25:05 +00:00
Daniel Stenberg 30eda92a53 Brad Spencer fixed the configure script to assume that there's no
/dev/urandom when built cross-compiled as then the script cannot check for
it.
2007-12-03 10:22:29 +00:00
Daniel Stenberg 35212da048 and we start on 1.5.2! 2007-11-21 10:16:44 +00:00
Daniel Stenberg 755e743cdd change 2007-11-21 10:12:20 +00:00
Yang Tse 94162d62ac Avoid a segfault when generating a DNS "Transaction ID" in internal
function init_id_key() under low memory conditions.
2007-10-02 18:26:48 +00:00
Daniel Stenberg ccf083e26d ares_strerror() segfaulted if the input error number was out of the currently
supported range.
2007-10-01 22:52:31 +00:00
Daniel Stenberg 8179743cee today's modifications by Steinar and me 2007-09-28 20:28:20 +00:00
Daniel Stenberg 0f4664d27f Steinar H. Gunderson fixed: Correctly clear sockets from the fd_set on in
several functions (write_tcp_data, read_tcp_data, read_udp_packets) so that
if it fails and the socket is closed the following code doesn't try to use
the file descriptor.
2007-09-22 21:23:10 +00:00
Daniel Stenberg 0f89a2e639 Steinar H. Gunderson modified c-ares to now also do to DNS retries even when
TCP is used since there are several edge cases where it still makes sense.
2007-09-22 21:04:16 +00:00
Daniel Stenberg 05b26e7566 Brad House provided a fix for ares_save_options(): Apparently I overlooked
something with the ares_save_options() where it would try to do a malloc(0)
when no options of that type needed to be saved.  On most platforms, this was
fine because malloc(0) doesn't actually return NULL, but on AIX it does, so
ares_save_options would return ARES_ENOMEM.
2007-09-22 20:45:50 +00:00
Daniel Stenberg 7fc300d5dc added Vlad's entire description of his valgrind fix 2007-07-14 13:11:36 +00:00
Daniel Stenberg 88ce03e945 Vlad Dinulescu fixed two outstanding valgrind reports 2007-07-14 13:08:50 +00:00
Daniel Stenberg 82d6240e7d 1.4.0 preps 2007-06-08 08:46:28 +00:00
Daniel Stenberg 42a2138d11 the revert 2007-06-05 13:53:10 +00:00
Daniel Stenberg 25d2a27c64 Brad Spencer found and fixed three flaws in the code, found with the new
gcc 4.2.0 warning: -Waddress
2007-06-02 20:09:23 +00:00
Daniel Stenberg b084dc8760 Brad House fixed VS2005 compiler warnings due to time_t being 64bit.
He also made recent Microsoft compilers use _strdup() instead of strdup().
2007-06-02 19:48:29 +00:00
Daniel Stenberg 2ae9536d32 Ashish Sharma provided a patch for supporting multiple entries in the
/etc/hosts file. Patch edited for coding style and functionality by me
(Daniel).
2007-06-02 19:42:25 +00:00
Daniel Stenberg 2faba57c85 Shmulik Regev brought cryptographically secure transaction IDs 2007-05-30 21:11:10 +00:00
Daniel Stenberg 79d59ec97b Brad House added ares_save_options() and ares_destroy_options() that can be
used to keep options for later re-usal when ares_init_options() is used.
2007-05-30 20:49:14 +00:00
Daniel Stenberg 670273968c added ares_process_fd() to allow applications to ask for processing on
specific sockets and thus avoiding select() and associated functions/macros.
This function will be used by upcoming libcurl releases for this very
reason. It also made me export the ares_socket_t type in the public ares.h
header file, since ares_process_fd() uses that type for two of the arguments.
2007-05-30 12:58:47 +00:00
Daniel Stenberg fcc3e2ca34 Ravi Pratap fixed a flaw in the init_by_resolv_conf() function for windows
that could cause it to return a bad return code.
2007-05-25 21:11:28 +00:00
Yang Tse b0b6a853f6 ares_getopt() command-line parser function does not belong to actual
c-ares library. It is just a convinience source code helper function
for use in example programs adig.c and ahost.c
2007-04-16 09:08:15 +00:00
Daniel Stenberg 7ba53a4f41 Vlad Dinulescu added ares_parse_ns_reply() 2007-02-19 14:06:11 +00:00
Yang Tse ecbc7f89c0 Fix c-ares failing to get the search sequence of /etc/hosts and
DNS from /etc/nsswitch.conf, /etc/host.conf or /etc/svc.conf when
/etc/resolv.conf did not exist or was unable to read it.
2007-02-13 16:14:25 +00:00
Daniel Stenberg 04d5d1895c Michael Wallner fixed this problem: When I set domains in the options
struct, and there are domain/search entries in /etc/resolv.conf, the domains
of the options struct will be overridden.
2006-11-22 22:54:41 +00:00