- ap_pduphostent
- ap_pgethostbyname
+
+
ap_pregcomp
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]
*) Return HTTP_RANGE_NOT_SATISFIABLE if the every range requested starts
*/
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
* the password for security reasons.
- ap_pduphostent
- ap_pgethostbyname
+
+
ap_pregcomp
&& 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 */
int ap_proxy_is_hostname(struct dirconn_entry *This, apr_pool_t *p)
{
if (addr[i] != '\0' || ap_proxy_host2addr(addr, &host) != NULL)
return 0;
- This->hostentry = ap_pduphostent (p, &host);
+ This->hostentry = pduphostent (p, &host);
/* Strip trailing dots */
for (i = strlen(addr) - 1; i > 0 && addr[i] == '.'; --i)
: 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.
* Optionally suppress the password for security reasons.
*/
ap_pbase64encode
ap_pcfg_open_custom
ap_pcfg_openfile
-ap_pduphostent
-ap_pgethostbyname
ap_post_config_hook
ap_pregcomp
ap_pregfree