chuck 97/04/11 23:17:46
Modified: src/modules/proxy proxy_util.c
Log:
Fix IP address handling of proxy_host2addr().
Revision Changes Path
1.13 +9 -10 apache/src/modules/proxy/proxy_util.c
Index: proxy_util.c
===================================================================
RCS file: /export/home/cvs/apache/src/modules/proxy/proxy_util.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C3 -r1.12 -r1.13
*** proxy_util.c 1997/04/11 05:10:52 1.12
--- proxy_util.c 1997/04/12 06:17:45 1.13
***************
*** 693,700 ****
proxy_host2addr(const char *host, struct hostent *reqhp)
{
int i;
! struct in_addr ipaddr;
! char *addr_str;
for (i=0; host[i] != '\0'; i++)
if (!isdigit(host[i]) && host[i] != '.')
--- 693,700 ----
proxy_host2addr(const char *host, struct hostent *reqhp)
{
int i;
! struct hostent *hp;
! u_long ipaddr;
for (i=0; host[i] != '\0'; i++)
if (!isdigit(host[i]) && host[i] != '.')
***************
*** 702,719 ****
if (host[i] != '\0')
{
- struct hostent *hp;
-
hp = gethostbyname(host);
! if (hp == NULL) return "Host not found";
! memcpy(reqhp, hp, sizeof(struct hostent));
} else
{
! if ((ipaddr.s_addr = inet_addr(host)) == -1)
! return "Bad IP address";
! Explain1("Address is %s", addr_str);
! memcpy(reqhp->h_addr, &ipaddr, sizeof(struct in_addr));
}
return NULL;
}
--- 702,718 ----
if (host[i] != '\0')
{
hp = gethostbyname(host);
! if (hp == NULL)
! return "Host not found";
} else
{
! ipaddr = inet_addr(host);
! hp = gethostbyaddr((char *)&ipaddr, sizeof(u_long), AF_INET);
! if (hp == NULL)
! return "Address not found";
}
+ memcpy(reqhp, hp, sizeof(struct hostent));
return NULL;
}