Current 2.3 under Solaris 7/x86 ...

The Hermit Hacker scrappy at hub.org
Wed Jun 14 13:54:36 UTC 2000


okay, I feel stupid *sigh*  this one failed to, then I clued in that I was
using Solaris' patch vs GNU's (which was installed, just not found before
Solaris') ... 

patch applied fine this time, and am compiling now ... sorry about that
...

On Wed, 14 Jun 2000, Katsuhiro Kondou wrote:

> In article <Pine.BSF.4.21.0006140853240.5938-100000 at thelab.hub.org>,
> 	The Hermit Hacker <scrappy at hub.org> wrote;
> 
> } Just re-cvs'd my source tree 2 min ago, and suspect that maybe Russ's
> } recent commits might have hosed this patch? 
> 
> Hm, I don't think so.  Russ's commit did not reach my patch.
> Anyway here again the patch which includes h_error fix.
> This is against CURRENT repository.
> -- 
> Katsuhiro Kondou
> 
> --- MANIFEST.orig	Tue Jun 13 12:04:07 2000
> +++ MANIFEST	Wed Jun 14 12:49:15 2000
> @@ -337,6 +337,7 @@
>  lib/gettime.c                         Get time and timezone info
>  lib/grpalias.c                        Group alias code used for OV3
>  lib/hash.c                            Create hash from message ID
> +lib/herror.c                          Error reporting for resolver
>  lib/inet_aton.c                       Extra source for inet_aton routine
>  lib/inet_ntoa.c                       Convert inaddr to string (BSD)
>  lib/inndcomm.c                        Library routines to talk to innd
> --- configure.in.orig	Wed Jun 14 19:23:01 2000
> +++ configure.in	Wed Jun 14 19:17:13 2000
> @@ -993,7 +993,7 @@
>  
>  dnl If we can't find any of the following, we have replacements for them.
>  AC_REPLACE_FUNCS(getopt inet_aton inet_ntoa pread pwrite strcasecmp \
> -                 strdup strerror strspn setenv)
> +                 strdup strerror strspn setenv herror)
>  
>  MISSING_OBJ="$LIBOBJS"
>  MISSING_SRC=`echo "$MISSING_OBJ" | sed 's/\.o/.c/g'`
> --- configure.orig	Wed Jun 14 19:28:53 2000
> +++ configure	Wed Jun 14 19:29:29 2000
> @@ -6342,7 +6342,7 @@
>  fi
>  
>  for ac_func in getopt inet_aton inet_ntoa pread pwrite strcasecmp \
> -                 strdup strerror strspn setenv
> +                 strdup strerror strspn setenv herror
>  do
>  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
>  echo "configure:6349: checking for $ac_func" >&5
> --- innfeed/host.c.orig	Wed Jan  5 06:46:30 2000
> +++ innfeed/host.c	Wed Jun 14 13:09:41 2000
> @@ -1132,6 +1132,7 @@
>    char **newIpAddrs = NULL;
>    struct in_addr ipAddr, *returnAddr ;
>    struct hostent *hostEnt ;
> +  char *msgstr[SMBUF] ;
>  
>    ASSERT(host->params != NULL);
>  
> @@ -1142,8 +1143,11 @@
>        if ( !inet_aton (host->params->ipName,&ipAddr) )
>  	{
>  	  if ((hostEnt = gethostbyname (host->params->ipName)) == NULL)
> -	    syslog (LOG_ERR, HOST_RESOLV_ERROR, host->params->peerName,
> -		    host->params->ipName, host_err_str ()) ;
> +	    {
> +	      herror (msgstr) ;
> +	      syslog (LOG_ERR, HOST_RESOLV_ERROR, host->params->peerName,
> +		    host->params->ipName, msgstr) ;
> +	    }
>  	  else
>  	    {
>  	      /* figure number of pointers that need space */
> --- innfeed/misc.c.orig	Sun Nov 21 10:00:34 1999
> +++ innfeed/misc.c	Wed Jun 14 12:42:26 2000
> @@ -209,41 +209,6 @@
>  }
>  
>  
> -
> -static const char * const pvt_h_errlist[] = {
> -  "Resolver Error 0 (no error)",
> -  "Unknown host",                         /* 1 HOST_NOT_FOUND */
> -  "Host name lookup failure",             /* 2 TRY_AGAIN */
> -  "Unknown server error",                 /* 3 NO_RECOVERY */
> -  "No address associated with name",      /* 4 NO_ADDRESS */
> -};
> -
> -static int pvt_h_nerr = (sizeof pvt_h_errlist / sizeof pvt_h_errlist[0]);
> -
> -#if defined(hpux) || defined(__hpux) || defined(_SCO_DS)
> -extern int h_errno;
> -#endif
> -
> -/* return a friendly string for the current value of h_errno. Pinched from
> -   Stevens */
> -const char *host_err_str (void)
> -{
> -  static char msgstr [200] ;
> -
> -  if (h_errno != 0)
> -    {
> -      if (h_errno > 0 && h_errno < pvt_h_nerr)
> -        sprintf (msgstr,"(%s)", pvt_h_errlist[h_errno]) ;
> -      else
> -        sprintf (msgstr,"(herrno = %d)", h_errno) ;
> -    }
> -  else
> -    msgstr [0] = '\0' ;
> -
> -  return msgstr ;
> -}
> -
> -
>  /* return true if the file exists and is a regular file. */
>  bool fileExistsP (const char *filename)
>  {
> --- /dev/null	Mon Jun  5 10:50:00 2000
> +++ lib/herror.c	Wed Jun 14 12:38:41 2000
> @@ -0,0 +1,31 @@
> +#include <sys/types.h>
> +#include <netdb.h>
> +
> +static const char * const pvt_h_errlist[] = {
> +  "Resolver Error 0 (no error)",
> +  "Unknown host",                         /* 1 HOST_NOT_FOUND */
> +  "Host name lookup failure",             /* 2 TRY_AGAIN */
> +  "Unknown server error",                 /* 3 NO_RECOVERY */
> +  "No address associated with name",      /* 4 NO_ADDRESS */
> +};
> +
> +static int pvt_h_nerr = (sizeof pvt_h_errlist / sizeof pvt_h_errlist[0]);
> +
> +#if defined(hpux) || defined(__hpux) || defined(_SCO_DS)
> +extern int h_errno;
> +#endif
> +
> +/* return a friendly string for the current value of h_errno. Pinched from
> +   Stevens */
> +void *herror(char *msgstr)
> +{
> +  if (h_errno != 0)
> +    {
> +      if (h_errno > 0 && h_errno < pvt_h_nerr)
> +        sprintf (msgstr,"(%s)", pvt_h_errlist[h_errno]) ;
> +      else
> +        sprintf (msgstr,"(herrno = %d)", h_errno) ;
> +    }
> +  else
> +    msgstr [0] = '\0' ;
> +}
> --- nnrpd/nnrpd.c.orig	Mon Jun 12 10:27:12 2000
> +++ nnrpd/nnrpd.c	Wed Jun 14 12:48:27 2000
> @@ -83,6 +83,9 @@
>  #if HAVE_GETSPNAM
>  STATIC char	*ShadowGroup;
>  #endif
> +#if	defined(DO_NNRP_GETHOSTBYADDR)
> +STATIC char 	HostErrorStr[SMBUF];
> +#endif	/* defined(DO_NNRP_GETHOSTBYADDR) */
>  
>  extern FUNCTYPE	CMDauthinfo();
>  extern FUNCTYPE	CMDdate();
> @@ -344,31 +347,33 @@
>  
>  
>  #if	defined(DO_NNRP_GETHOSTBYADDR)
> +
>  /*
>  **  Convert an IP address to a hostname.  Don't trust the reverse lookup,
>  **  since anyone can fake .in-addr.arpa entries.
>  */
>  STATIC BOOL
> -Address2Name(ap, hostname, i)
> -    register INADDR		*ap;
> -    register char		*hostname;
> -    register int		i;
> +Address2Name(INADDR *ap, char *hostname, int i)
>  {
> -    register char		*p;
> -    register struct hostent	*hp;
> +    char		*p;
> +    struct hostent	*hp;
>  #if	defined(h_addr)
> -    register char		**pp;
> +    char		**pp;
>  #endif
>  
>      /* Get the official hostname, store it away. */
> -    if ((hp = gethostbyaddr((char *)ap, sizeof *ap, AF_INET)) == NULL)
> +    if ((hp = gethostbyaddr((char *)ap, sizeof *ap, AF_INET)) == NULL) {
> +	herror(HostErrorStr);
>  	return FALSE;
> +    }
>      (void)strncpy(hostname, hp->h_name, i);
>      hostname[i - 1] = '\0';
>  
>      /* Get addresses for this host. */
> -    if ((hp = gethostbyname(hostname)) == NULL)
> +    if ((hp = gethostbyname(hostname)) == NULL) {
> +	herror(HostErrorStr);
>  	return FALSE;
> +    }
>  
>      /* Make sure one of those addresses is the address we got. */
>  #if	defined(h_addr)
> @@ -413,6 +418,7 @@
>      char		*ClientAddr;
>      char		accesslist[BIG_BUFFER];
>      int                 code;
> +    static ACCESSGROUP	*authconf;
>  
>      /* Get the peer's name. */
>      length = sizeof sin;
> @@ -439,11 +445,18 @@
>  
>  	/* Get client's name. */
>  #if	defined(DO_NNRP_GETHOSTBYADDR)
> +	HostErrorStr[0] = '\0';
>  	if (!Address2Name(&sin.sin_addr, ClientHost, (int)sizeof ClientHost)) {
>  	    (void)strcpy(ClientHost, inet_ntoa(sin.sin_addr));
> -	    syslog(L_NOTICE,
> -		"? cant gethostbyaddr %s %m -- using IP address for access",
> -		ClientHost);
> +	    if (HostErrorStr[0] == '\0') {
> +		syslog(L_NOTICE,
> +		    "? cant gethostbyaddr %s %m -- using IP address for access",
> +		    ClientHost);
> +	    } else {
> +		syslog(L_NOTICE,
> +		    "? cant gethostbyaddr %s %s -- using IP address for access",
> +		    ClientHost, HostErrorStr);
> +	    }
>  	    ClientAddr = ClientHost;
>              ClientIP = inet_addr(ClientHost);
>  	}
> @@ -464,11 +477,18 @@
>  	    ExitWithStats(1, TRUE);
>  	}
>  #ifdef DO_NNRP_GETHOSTBYADDR
> +	HostErrorStr[0] = '\0';
>  	if (!Address2Name(&sin.sin_addr, ServerHost, sizeof(ServerHost))) {
>  	    strcpy(ServerHost, inet_ntoa(sin.sin_addr));
> -	    syslog(L_NOTICE,
> -		   "? cant gethostbyaddr %s %m -- using IP address for access",
> -		   ClientHost);
> +	    if (HostErrorStr[0] == '\0') {
> +		syslog(L_NOTICE,
> +		    "? cant gethostbyaddr %s %m -- using IP address for access",
> +		    ClientHost);
> +	    } else {
> +		syslog(L_NOTICE,
> +		    "? cant gethostbyaddr %s %s -- using IP address for access",
> +		    ClientHost, HostErrorStr);
> +	    }
>  	}
>  #else
>          strcpy(ServerHost, inet_ntoa(sin.sin_addr));
> @@ -489,6 +509,10 @@
>  	}
>  	NGgetlist(&PERMreadlist, accesslist);
>  	PERMpostlist = PERMreadlist;
> +	if (!authconf)
> +	    authconf = NEW(ACCESSGROUP, 1);
> +	PERMaccessconf = authconf;
> +	SetDefaultAccess(PERMaccessconf);
>      } else {
>  #endif	/* DO_PERL */
>  
> @@ -506,6 +530,10 @@
>  	    PERMspecified = NGgetlist(&PERMreadlist, accesslist);
>  	    PERMpostlist = PERMreadlist;
>  	}
> +	if (!authconf)
> +	    authconf = NEW(ACCESSGROUP, 1);
> +	PERMaccessconf = authconf;
> +	SetDefaultAccess(PERMaccessconf);
>      } else {
>  #endif	/* DO_PYTHON */
>  	PERMgetaccess();
> --- nnrpd/nnrpd.h.orig	Mon Jun 12 10:27:12 2000
> +++ nnrpd/nnrpd.h	Wed Jun 14 00:06:32 2000
> @@ -203,6 +203,7 @@
>  extern BOOL		ParseDistlist();
>  extern READTYPE		READline();
>  extern char		*OVERGetHeader(char *p, int field);
> +extern void SetDefaultAccess(ACCESSGROUP*);
>  
>  #if defined(STDC_HEADERS) || defined(HAVE_STDARG_H)
>  extern void             Reply(const char *fmt, ...);
> --- nnrpd/perm.c.orig	Wed Jun 14 00:06:58 2000
> +++ nnrpd/perm.c	Wed Jun 14 07:10:45 2000
> @@ -85,7 +85,6 @@
>  static METHOD *copy_method(METHOD*);
>  static void free_method(METHOD*);
>  static AUTHGROUP *copy_authgroup(AUTHGROUP*);
> -static void setdefaultaccess(ACCESSGROUP*);
>  static void free_authgroup(AUTHGROUP*);
>  static ACCESSGROUP *copy_accessgroup(ACCESSGROUP*);
>  static void free_accessgroup(ACCESSGROUP*);
> @@ -403,13 +402,15 @@
>      return(ret);
>  }
>  
> -static void setdefaultaccess(ACCESSGROUP *curaccess)
> +void SetDefaultAccess(ACCESSGROUP *curaccess)
>  {
> +    curaccess->allownewnews = innconf->allownewnews;;
> +    curaccess->locpost = FALSE;
> +    curaccess->allowapproved = FALSE;
>      curaccess->localtime = FALSE;
>      curaccess->strippath = FALSE;
>      curaccess->nnrpdperlfilter = TRUE;
>      curaccess->nnrpdpythonfilter = TRUE;
> -    curaccess->allownewnews = innconf->allownewnews;;
>      if (innconf->fromhost)
>  	curaccess->fromhost = COPY(innconf->fromhost);
>      if (innconf->pathhost)
> @@ -442,6 +443,8 @@
>      curaccess->backoff_trigger = innconf->backoff_trigger;
>      curaccess->nnrpdcheckart = innconf->nnrpdcheckart;
>      curaccess->nnrpdauthsender = innconf->nnrpdauthsender;
> +    curaccess->virtualhost = FALSE;
> +    curaccess->newsmaster = NULL;
>  }
>  
>  static void free_authgroup(AUTHGROUP *del)
> @@ -1025,7 +1028,7 @@
>  			curaccess = NEW(ACCESSGROUP, 1);
>  			memset((POINTER) curaccess, 0, sizeof(ACCESSGROUP));
>  			memset(ConfigBit, '\0', ConfigBitsize);
> -			setdefaultaccess(curaccess);
> +			SetDefaultAccess(curaccess);
>  		    }
>  		    curaccess->name = str;
>  		    inwhat = 2;
> @@ -1118,7 +1121,7 @@
>  		    (void)memset((POINTER)curgroup->access, 0,
>  		      sizeof(ACCESSGROUP));
>  		    memset(ConfigBit, '\0', ConfigBitsize);
> -		    setdefaultaccess(curgroup->access);
> +		    SetDefaultAccess(curgroup->access);
>  		}
>  		accessdecl_parse(curgroup->access, cf->f, tok);
>  		break;
> @@ -1327,6 +1330,7 @@
>      int i;
>      char *cp, **list;
>      char *user[2];
> +    static ACCESSGROUP *noaccessconf;
>  
>      if (ConfigBit == NULL) {
>  	if (PERMMAX % 8 == 0)
> @@ -1416,8 +1420,13 @@
>  	    }
>  	} else
>  	    VirtualPathlen = 0;
> -    } else
> +    } else {
> +	if (!noaccessconf)
> +	    noaccessconf = NEW(ACCESSGROUP, 1);
> +	PERMaccessconf = noaccessconf;
> +	SetDefaultAccess(PERMaccessconf);
>  	syslog(L_TRACE, "%s no_access_realm", ClientHost);
> +    }
>  }
>  
>  /* strip blanks out of a string */
> 
> 

Marc G. Fournier                   ICQ#7615664               IRC Nick: Scrappy
Systems Administrator @ hub.org 
primary: scrappy at hub.org           secondary: scrappy@{freebsd|postgresql}.org 




More information about the inn-workers mailing list