mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
API routines ap_pgethostbyname() and ap_pduphostent() are no longer
available. Use apr_getaddrinfo() instead. The ap_pduphostent() code was moved to modules/proxy/proxy_util.c for now since that is the only caller. When the proxy's use of the resolver is APR-ized this won't be needed anymore. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87399 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -182,11 +182,11 @@ EXPORTS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
ap_pduphostent
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ap_pgethostbyname
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ap_pregcomp
|
ap_pregcomp
|
||||||
|
4
CHANGES
4
CHANGES
@@ -1,4 +1,8 @@
|
|||||||
Changes with Apache 2.0b1
|
Changes with Apache 2.0b1
|
||||||
|
|
||||||
|
*) API routines ap_pgethostbyname() and ap_pduphostent() are no longer
|
||||||
|
available. Use apr_getaddrinfo() instead. [Jeff Trawick]
|
||||||
|
|
||||||
*) Get "NameVirtualHost *" working in 2.0. [Ryan Bloom]
|
*) Get "NameVirtualHost *" working in 2.0. [Ryan Bloom]
|
||||||
|
|
||||||
*) Return HTTP_RANGE_NOT_SATISFIABLE if the every range requested starts
|
*) Return HTTP_RANGE_NOT_SATISFIABLE if the every range requested starts
|
||||||
|
@@ -157,26 +157,6 @@ AP_DECLARE(apr_port_t) ap_default_port_for_scheme(const char *scheme_str);
|
|||||||
*/
|
*/
|
||||||
AP_DECLARE(apr_port_t) ap_default_port_for_request(const request_rec *r);
|
AP_DECLARE(apr_port_t) ap_default_port_for_request(const request_rec *r);
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a copy of a "struct hostent" record; it was presumably returned
|
|
||||||
* from a call to gethostbyname() and lives in static storage.
|
|
||||||
* By creating a copy we can tuck it away for later use.
|
|
||||||
* @param p Pool to allocate out of
|
|
||||||
* @param hp hostent to duplicate
|
|
||||||
* @deffunc struct hostent * ap_pduphostent(apr_pool_t *p, const struct hostent *hp)
|
|
||||||
*/
|
|
||||||
AP_DECLARE(struct hostent *) ap_pduphostent(apr_pool_t *p, const struct hostent *hp);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* resolve hostname, if successful return an ALLOCATED COPY OF the hostent
|
|
||||||
* structure, intended to be stored and used later.
|
|
||||||
* @param p The pool to allocate out of
|
|
||||||
* @param hostname The hostname to resolve
|
|
||||||
* @return The allocated hostent structure
|
|
||||||
* @deffunc struct hostent * ap_pgethostbyname(apr_pool_t *p, const char *hostname)
|
|
||||||
*/
|
|
||||||
AP_DECLARE(struct hostent *) ap_pgethostbyname(apr_pool_t *p, const char *hostname);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unparse a uri_components structure to an URI string. Optionally suppress
|
* Unparse a uri_components structure to an URI string. Optionally suppress
|
||||||
* the password for security reasons.
|
* the password for security reasons.
|
||||||
|
@@ -182,11 +182,11 @@ EXPORTS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
ap_pduphostent
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ap_pgethostbyname
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ap_pregcomp
|
ap_pregcomp
|
||||||
|
@@ -1024,6 +1024,58 @@ static int proxy_match_domainname(struct dirconn_entry *This, request_rec *r)
|
|||||||
&& strncasecmp(&host[h_len - d_len], This->name, d_len) == 0;
|
&& strncasecmp(&host[h_len - d_len], This->name, d_len) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Create a copy of a "struct hostent" record; it was presumably returned
|
||||||
|
* from a call to gethostbyname() and lives in static storage.
|
||||||
|
* By creating a copy we can tuck it away for later use.
|
||||||
|
*/
|
||||||
|
static struct hostent * pduphostent(apr_pool_t *p, const struct hostent *hp)
|
||||||
|
{
|
||||||
|
struct hostent *newent;
|
||||||
|
char **ptrs;
|
||||||
|
char **aliases;
|
||||||
|
struct in_addr *addrs;
|
||||||
|
int i = 0, j = 0;
|
||||||
|
|
||||||
|
if (hp == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* Count number of alias entries */
|
||||||
|
if (hp->h_aliases != NULL)
|
||||||
|
for (; hp->h_aliases[j] != NULL; ++j)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Count number of in_addr entries */
|
||||||
|
if (hp->h_addr_list != NULL)
|
||||||
|
for (; hp->h_addr_list[i] != NULL; ++i)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Allocate hostent structure, alias ptrs, addr ptrs, addrs */
|
||||||
|
newent = (struct hostent *) apr_palloc(p, sizeof(*hp));
|
||||||
|
aliases = (char **) apr_palloc(p, (j+1) * sizeof(char*));
|
||||||
|
ptrs = (char **) apr_palloc(p, (i+1) * sizeof(char*));
|
||||||
|
addrs = (struct in_addr *) apr_palloc(p, (i+1) * sizeof(struct in_addr));
|
||||||
|
|
||||||
|
*newent = *hp;
|
||||||
|
newent->h_name = apr_pstrdup(p, hp->h_name);
|
||||||
|
newent->h_aliases = aliases;
|
||||||
|
newent->h_addr_list = (char**) ptrs;
|
||||||
|
|
||||||
|
/* Copy Alias Names: */
|
||||||
|
for (j = 0; hp->h_aliases[j] != NULL; ++j) {
|
||||||
|
aliases[j] = apr_pstrdup(p, hp->h_aliases[j]);
|
||||||
|
}
|
||||||
|
aliases[j] = NULL;
|
||||||
|
|
||||||
|
/* Copy address entries */
|
||||||
|
for (i = 0; hp->h_addr_list[i] != NULL; ++i) {
|
||||||
|
ptrs[i] = (char*) &addrs[i];
|
||||||
|
addrs[i] = *(struct in_addr *) hp->h_addr_list[i];
|
||||||
|
}
|
||||||
|
ptrs[i] = NULL;
|
||||||
|
|
||||||
|
return newent;
|
||||||
|
}
|
||||||
|
|
||||||
/* Return TRUE if addr represents a host name */
|
/* Return TRUE if addr represents a host name */
|
||||||
int ap_proxy_is_hostname(struct dirconn_entry *This, apr_pool_t *p)
|
int ap_proxy_is_hostname(struct dirconn_entry *This, apr_pool_t *p)
|
||||||
{
|
{
|
||||||
@@ -1049,7 +1101,7 @@ int ap_proxy_is_hostname(struct dirconn_entry *This, apr_pool_t *p)
|
|||||||
if (addr[i] != '\0' || ap_proxy_host2addr(addr, &host) != NULL)
|
if (addr[i] != '\0' || ap_proxy_host2addr(addr, &host) != NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
This->hostentry = ap_pduphostent (p, &host);
|
This->hostentry = pduphostent (p, &host);
|
||||||
|
|
||||||
/* Strip trailing dots */
|
/* Strip trailing dots */
|
||||||
for (i = strlen(addr) - 1; i > 0 && addr[i] == '.'; --i)
|
for (i = strlen(addr) - 1; i > 0 && addr[i] == '.'; --i)
|
||||||
|
@@ -112,70 +112,6 @@ AP_DECLARE(apr_port_t) ap_default_port_for_request(const request_rec *r)
|
|||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a copy of a "struct hostent" record; it was presumably returned
|
|
||||||
* from a call to gethostbyname() and lives in static storage.
|
|
||||||
* By creating a copy we can tuck it away for later use.
|
|
||||||
*/
|
|
||||||
AP_DECLARE(struct hostent *) ap_pduphostent(apr_pool_t *p, const struct hostent *hp)
|
|
||||||
{
|
|
||||||
struct hostent *newent;
|
|
||||||
char **ptrs;
|
|
||||||
char **aliases;
|
|
||||||
struct in_addr *addrs;
|
|
||||||
int i = 0, j = 0;
|
|
||||||
|
|
||||||
if (hp == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* Count number of alias entries */
|
|
||||||
if (hp->h_aliases != NULL)
|
|
||||||
for (; hp->h_aliases[j] != NULL; ++j)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* Count number of in_addr entries */
|
|
||||||
if (hp->h_addr_list != NULL)
|
|
||||||
for (; hp->h_addr_list[i] != NULL; ++i)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* Allocate hostent structure, alias ptrs, addr ptrs, addrs */
|
|
||||||
newent = (struct hostent *) apr_palloc(p, sizeof(*hp));
|
|
||||||
aliases = (char **) apr_palloc(p, (j+1) * sizeof(char*));
|
|
||||||
ptrs = (char **) apr_palloc(p, (i+1) * sizeof(char*));
|
|
||||||
addrs = (struct in_addr *) apr_palloc(p, (i+1) * sizeof(struct in_addr));
|
|
||||||
|
|
||||||
*newent = *hp;
|
|
||||||
newent->h_name = apr_pstrdup(p, hp->h_name);
|
|
||||||
newent->h_aliases = aliases;
|
|
||||||
newent->h_addr_list = (char**) ptrs;
|
|
||||||
|
|
||||||
/* Copy Alias Names: */
|
|
||||||
for (j = 0; hp->h_aliases[j] != NULL; ++j) {
|
|
||||||
aliases[j] = apr_pstrdup(p, hp->h_aliases[j]);
|
|
||||||
}
|
|
||||||
aliases[j] = NULL;
|
|
||||||
|
|
||||||
/* Copy address entries */
|
|
||||||
for (i = 0; hp->h_addr_list[i] != NULL; ++i) {
|
|
||||||
ptrs[i] = (char*) &addrs[i];
|
|
||||||
addrs[i] = *(struct in_addr *) hp->h_addr_list[i];
|
|
||||||
}
|
|
||||||
ptrs[i] = NULL;
|
|
||||||
|
|
||||||
return newent;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* pgethostbyname(): resolve hostname, if successful return an ALLOCATED
|
|
||||||
* COPY OF the hostent structure, intended to be stored and used later.
|
|
||||||
* (gethostbyname() uses static storage that would be overwritten on each call)
|
|
||||||
*/
|
|
||||||
AP_DECLARE(struct hostent *) ap_pgethostbyname(apr_pool_t *p, const char *hostname)
|
|
||||||
{
|
|
||||||
struct hostent *hp = gethostbyname(hostname);
|
|
||||||
return (hp == NULL) ? NULL : ap_pduphostent(p, hp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Unparse a uri_components structure to an URI string.
|
/* Unparse a uri_components structure to an URI string.
|
||||||
* Optionally suppress the password for security reasons.
|
* Optionally suppress the password for security reasons.
|
||||||
*/
|
*/
|
||||||
|
@@ -236,8 +236,6 @@ ap_pbase64decode
|
|||||||
ap_pbase64encode
|
ap_pbase64encode
|
||||||
ap_pcfg_open_custom
|
ap_pcfg_open_custom
|
||||||
ap_pcfg_openfile
|
ap_pcfg_openfile
|
||||||
ap_pduphostent
|
|
||||||
ap_pgethostbyname
|
|
||||||
ap_post_config_hook
|
ap_post_config_hook
|
||||||
ap_pregcomp
|
ap_pregcomp
|
||||||
ap_pregfree
|
ap_pregfree
|
||||||
|
Reference in New Issue
Block a user