try to handle broken dns servers

git-svn: trunk@2249
remotes/push_mirror/metadata
Tomasz Kojm 19 years ago
parent 8de0d03122
commit 4ecce39fe4
  1. 7
      clamav-devel/ChangeLog
  2. 3
      clamav-devel/clamav-config.h.in
  3. 25
      clamav-devel/configure
  4. 8
      clamav-devel/configure.in
  5. 21
      clamav-devel/freshclam/dns.c

@ -1,3 +1,10 @@
Wed Sep 13 17:46:06 CEST 2006 (tk)
----------------------------------
* freshclam/dns.c: try to handle broken dns servers (such as in SpeedTouch
510), the workaround must be enabled during installation
Patch from Arnold Metselaar <arnold.metselaar*planet.nl>
* configure: new --enable-dns-fix switch
Wed Sep 13 00:50:40 CEST 2006 (tk)
----------------------------------
* shared/cfgparser.c: fix error path leaks, patch from Mark Pizzolato

@ -84,6 +84,9 @@
/* file i/o buffer size */
#undef FILEBUFF
/* enable workaround for broken DNS servers */
#undef FRESHCLAM_DNS_FIX
/* use "Cache-Control: no-cache" in freshclam */
#undef FRESHCLAM_NO_CACHE

@ -1482,6 +1482,7 @@ Optional Features:
--disable-clamav disable test for clamav user/group
--enable-debug enable debug code
--enable-no-cache use "Cache-Control: no-cache" in freshclam
--enable-dns-fix enable workaround for broken DNS servers (as in SpeedTouch 510)
--enable-experimental enable experimental code
--enable-bigstack increase thread stack size
--disable-gethostbyname_r disable support for gethostbyname_r
@ -5882,7 +5883,7 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
case $host in
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 5885 "configure"' > conftest.$ac_ext
echo '#line 5886 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@ -6515,7 +6516,7 @@ chmod -w .
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
compiler_c_o=no
if { (eval echo configure:6518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
if { (eval echo configure:6519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
if test -s out/conftest.err; then
@ -8551,7 +8552,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 8554 "configure"
#line 8555 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -8649,7 +8650,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 8652 "configure"
#line 8653 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -13174,6 +13175,22 @@ _ACEOF
fi
# Check whether --enable-dns-fix was given.
if test "${enable_dns_fix+set}" = set; then
enableval=$enable_dns_fix; enable_dnsfix=$enableval
else
enable_dnsfix="no"
fi
if test "$enable_dnsfix" = "yes"; then
cat >>confdefs.h <<\_ACEOF
#define FRESHCLAM_DNS_FIX 1
_ACEOF
fi
# Check whether --enable-experimental was given.
if test "${enable_experimental+set}" = set; then
enableval=$enable_experimental; enable_experimental=$enableval

@ -300,6 +300,14 @@ if test "$enable_nocache" = "yes"; then
AC_DEFINE(FRESHCLAM_NO_CACHE,1,[use "Cache-Control: no-cache" in freshclam])
fi
AC_ARG_ENABLE(dns-fix,
[ --enable-dns-fix enable workaround for broken DNS servers (as in SpeedTouch 510)],
enable_dnsfix=$enableval, enable_dnsfix="no")
if test "$enable_dnsfix" = "yes"; then
AC_DEFINE(FRESHCLAM_DNS_FIX,1,[enable workaround for broken DNS servers])
fi
AC_ARG_ENABLE(experimental,
[ --enable-experimental enable experimental code],
enable_experimental=$enableval, enable_experimental="no")

@ -44,7 +44,7 @@
char *txtquery(const char *domain, unsigned int *ttl)
{
unsigned char answer[PACKETSZ], host[128], *pt, *txt;
int len, exp, cttl, size, txtlen, type;
int len, exp, cttl, size, txtlen, type, qtype;
if(res_init() < 0) {
@ -55,9 +55,24 @@ char *txtquery(const char *domain, unsigned int *ttl)
logg("*Querying %s\n", domain);
memset(answer, 0, PACKETSZ);
if((len = res_query(domain, C_IN, T_TXT, answer, PACKETSZ)) < 0) {
qtype = T_TXT;
if((len = res_query(domain, C_IN, qtype, answer, PACKETSZ)) < 0) {
#ifdef FRESHCLAM_DNS_FIX
/* The DNS server in the SpeedTouch Alcatel 510 modem can't
* handle a TXT-query, but it can resolve an ANY-query to a
* TXT-record, so we try an ANY-query now. The thing we try
* to resolve normally only has a TXT-record anyway.
*/
memset(answer, 0, PACKETSZ);
qtype=T_ANY;
if((len = res_query(domain, C_IN, qtype, answer, PACKETSZ)) < 0) {
logg("^Can't query %s\n", domain);
return NULL;
}
#else
logg("^Can't query %s\n", domain);
return NULL;
#endif
}
pt = answer + sizeof(HEADER);
@ -70,7 +85,7 @@ char *txtquery(const char *domain, unsigned int *ttl)
pt += exp;
GETSHORT(type, pt);
if(type != T_TXT) {
if(type != qtype) {
logg("^Broken DNS reply.\n");
return NULL;
}

Loading…
Cancel
Save