]> granicus.if.org Git - apache/commitdiff
tweak ap_get_remote_host() so that the caller can find out if she got
authorJeff Trawick <trawick@apache.org>
Fri, 9 Mar 2001 20:30:34 +0000 (20:30 +0000)
committerJeff Trawick <trawick@apache.org>
Fri, 9 Mar 2001 20:30:34 +0000 (20:30 +0000)
back an IP address

mod_access needed to know this, but the old code didn't handle IPv6

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88484 13f79535-47bb-0310-9956-ffa450edef68

include/http_core.h
modules/aaa/mod_access.c
modules/loggers/mod_log_config.c
modules/mappers/mod_rewrite.c
modules/metadata/mod_setenvif.c
modules/metadata/mod_usertrack.c
server/core.c
server/scoreboard.c
server/util_script.c

index db9bf037b0eb86d3da0b4502efa0b355e8233063..da40736327bee60477e7fb4d1d047c090e29c7fe 100644 (file)
@@ -184,10 +184,12 @@ AP_DECLARE(const char *) ap_document_root(request_rec *r);
  *                   setting.  The result is the (double reverse checked) 
  *                   hostname, or NULL if any of the lookups fail.
  * </PRE>
+ * @param str_is_ip unless NULL is passed, this will be set to non-zero on output when an IP address 
+ *        string is returned
  * @return The remote hostname
- * @deffunc const char *ap_get_remote_host(conn_rec *conn, void *dir_config, int type)
+ * @deffunc const char *ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip)
  */
-AP_DECLARE(const char *) ap_get_remote_host(conn_rec *conn, void *dir_config, int type);
+AP_DECLARE(const char *) ap_get_remote_host(conn_rec *conn, void *dir_config, int type, int *str_is_ip);
 
 /**
  * Retrieve the login name of the remote user.  Undef if it could not be
index 055bc43f0f2d3964551cb274f52b0648b18a89b8..39440ff5ccac8e6e6624b3894190ecabc034ca5f 100644 (file)
@@ -341,10 +341,12 @@ static int find_allowdeny(request_rec *r, apr_array_header_t *a, int method)
 
        case T_HOST:
            if (!gothost) {
+                int remotehost_is_ip;
+
                remotehost = ap_get_remote_host(r->connection, r->per_dir_config,
-                                           REMOTE_DOUBLE_REV);
+                                                REMOTE_DOUBLE_REV, &remotehost_is_ip);
 
-               if ((remotehost == NULL) || is_ip(remotehost))
+               if ((remotehost == NULL) || remotehost_is_ip)
                    gothost = 1;
                else
                    gothost = 2;
index 150babfbf62a66637a514899bcf53b5644395740..fbe7ec1ca7052bc341cfba418a29239d3579a35d 100644 (file)
@@ -303,7 +303,7 @@ static const char *constant_item(request_rec *dummy, char *stuff)
 static const char *log_remote_host(request_rec *r, char *a)
 {
     return ap_get_remote_host(r->connection, r->per_dir_config,
-                                    REMOTE_NAME);
+                                    REMOTE_NAME, NULL);
 }
 
 static const char *log_remote_address(request_rec *r, char *a)
index 4adddc50d0784778825a6a5ea45a2a045a1d5800..96863d9bc47919ff6f8e2c88670824e696044f7d 100644 (file)
@@ -3138,7 +3138,7 @@ static void rewritelog(request_rec *r, int level, const char *text, ...)
     }
 
     rhost = ap_get_remote_host(conn, r->server->module_config, 
-                               REMOTE_NOLOOKUP);
+                               REMOTE_NOLOOKUP, NULL);
     if (rhost == NULL) {
         rhost = "UNKNOWN-HOST";
     }
@@ -3409,7 +3409,7 @@ static char *lookup_variable(request_rec *r, char *var)
     }
     else if (strcasecmp(var, "REMOTE_HOST") == 0) {
         result = (char *)ap_get_remote_host(r->connection,
-                                         r->per_dir_config, REMOTE_NAME);
+                                            r->per_dir_config, REMOTE_NAME, NULL);
     }
     else if (strcasecmp(var, "REMOTE_USER") == 0) {
         result = r->user;
index c0a3d149c60ed919177d02f3a4116af6c2817493..3e12a713672bb15259ac97aaeac2ad41890c5106 100644 (file)
@@ -402,7 +402,7 @@ static int match_headers(request_rec *r)
                break;
            case SPECIAL_REMOTE_HOST:
                val =  ap_get_remote_host(r->connection, r->per_dir_config,
-                                         REMOTE_NAME);
+                                         REMOTE_NAME, NULL);
                break;
            case SPECIAL_REMOTE_USER:
                val = r->user;
index 0e1cbd880d3ff14d2119038caf16f9ad18ea0bd9..dfe39f08754db27b67056b53294b3537350cca4a 100644 (file)
@@ -138,7 +138,7 @@ static void make_cookie(request_rec *r)
     char cookiebuf[1024];
     char *new_cookie;
     const char *rname = ap_get_remote_host(r->connection, r->per_dir_config,
-                                          REMOTE_NAME);
+                                          REMOTE_NAME, NULL);
     cookie_dir_rec *dcfg;
 
     dcfg = ap_get_module_config(r->per_dir_config, &usertrack_module);
index 070c4d1e09b43a1a80c88d30099efe90e77c8e19..962ad246cec302315ed8142cc07b40100594d5e5 100644 (file)
@@ -607,10 +607,14 @@ static APR_INLINE void do_double_reverse (conn_rec *conn)
 }
 
 AP_DECLARE(const char *) ap_get_remote_host(conn_rec *conn, void *dir_config,
-                                           int type)
+                                           int type, int *str_is_ip)
 {
     int hostname_lookups;
 
+    if (str_is_ip) { /* if caller wants to know */
+        *str_is_ip = 0;
+    }
+
     /* If we haven't checked the host name, and we want to */
     if (dir_config) {
        hostname_lookups =
@@ -667,6 +671,9 @@ AP_DECLARE(const char *) ap_get_remote_host(conn_rec *conn, void *dir_config,
            return NULL;
        }
        else {
+            if (str_is_ip) { /* if caller wants to know */
+                *str_is_ip = 1;
+            }
            return conn->remote_ip;
        }
     }
index 80277debaf81cb4189dfaea3be06e60588caaeb4..d93a84aaecc1c04d1a33af00c2d0671b7bc3e91b 100644 (file)
@@ -300,7 +300,7 @@ int ap_update_child_status(int child_num, int thread_num, int status, request_re
        if (r) {
            conn_rec *c = r->connection;
            apr_cpystrn(ss->client, ap_get_remote_host(c, r->per_dir_config,
-                                 REMOTE_NOLOOKUP), sizeof(ss->client));
+                                 REMOTE_NOLOOKUP, NULL), sizeof(ss->client));
            if (r->the_request == NULL) {
                    apr_cpystrn(ss->request, "NULL", sizeof(ss->request));
            } else if (r->parsed_uri.password == NULL) {
index 58fcf6be8f02f0a11b92acda7b05ad175e14b574..875bec9c7a1186d07fd7405be853dd478c86d1d9 100644 (file)
@@ -247,7 +247,7 @@ AP_DECLARE(void) ap_add_common_vars(request_rec *r)
     apr_table_addn(e, "SERVER_ADDR", r->connection->local_ip); /* Apache */
     apr_table_addn(e, "SERVER_PORT",
                  apr_psprintf(r->pool, "%u", ap_get_server_port(r)));
-    host = ap_get_remote_host(c, r->per_dir_config, REMOTE_HOST);
+    host = ap_get_remote_host(c, r->per_dir_config, REMOTE_HOST, NULL);
     if (host) {
        apr_table_addn(e, "REMOTE_HOST", host);
     }