You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2007/11/24 17:21:54 UTC

svn commit: r597872 - in /tomcat/connectors/trunk/jk/native: apache-1.3/mod_jk.c apache-2.0/mod_jk.c

Author: rjung
Date: Sat Nov 24 08:21:53 2007
New Revision: 597872

URL: http://svn.apache.org/viewvc?rev=597872&view=rev
Log:
Implement the new vhost iterator for Apache httpd.

Modified:
    tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
    tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c

Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?rev=597872&r1=597871&r2=597872&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Sat Nov 24 08:21:53 2007
@@ -215,6 +215,7 @@
     array_header *index_names;
 } dir_config_rec;
 
+static server_rec *main_server = NULL;
 static jk_logger_t *main_log = NULL;
 static table *jk_log_fds = NULL;
 static jk_worker_env_t worker_env;
@@ -244,6 +245,12 @@
                                        const char *const *log_values,
                                        unsigned num_of_log_items);
 
+static void * JK_METHOD ws_next_vhost(void *d);
+
+static void JK_METHOD ws_vhost_to_text(void *d, char *buf, int len);
+
+static jk_uri_worker_map_t * JK_METHOD ws_vhost_to_uw_map(void *d);
+
 /* srevilak - new function prototypes */
 static void jk_server_cleanup(void *data);
 static void jk_generic_cleanup(server_rec * s);
@@ -450,6 +457,78 @@
     }
 }
 
+static void * JK_METHOD ws_next_vhost(void *d)
+{
+    server_rec *s = (server_rec *)d;
+    if (s == NULL)
+        return main_server;
+    return s->next;
+}
+
+static void JK_METHOD ws_vhost_to_text(void *d, char *buf, int len)
+{
+    server_rec *s = (server_rec *)d;
+    int used = 0;
+
+    if (s->server_hostname)
+        used += strlen(s->server_hostname);
+    if (!s->is_virtual) {
+        if (s->port)
+            used += strlen(":XXXXX");
+    }
+    else if (s->addrs) {
+        used += strlen(" [");
+        if (s->addrs->virthost)
+            used += strlen(s->addrs->virthost);
+        if (s->addrs->host_port)
+            used += strlen(":XXXXX");
+        used += strlen("]");
+    }
+
+    if (len < used && len > strlen("XXX")) {
+        strcpy(buf, "XXX");
+        return;
+    }
+
+    used = 0;
+
+    if (s->server_hostname) {
+        strcpy(buf + used, s->server_hostname);
+        used += strlen(s->server_hostname);
+    }
+    if (!s->is_virtual) {
+        if (s->port) {
+            sprintf(buf + used, ":%hu", s->port);
+            used = strlen(buf);
+        }
+    }
+    else if (s->addrs) {
+        strcpy(buf + used, " [");
+        used += strlen(" [");
+        if (s->addrs->virthost) {
+            strcpy(buf + used, s->addrs->virthost);
+            used += strlen(s->addrs->virthost);
+        }
+        if (s->addrs->host_port) {
+            sprintf(buf + used, ":%hu", s->addrs->host_port);
+            used = strlen(buf);
+        }
+        strcpy(buf + used, "]");
+        used += strlen("]");
+    }
+}
+
+static jk_uri_worker_map_t * JK_METHOD ws_vhost_to_uw_map(void *d)
+{
+    server_rec *s = (server_rec *)d;
+    jk_server_conf_t *conf = NULL;
+    if (s == NULL)
+        return NULL;
+    conf = (jk_server_conf_t *) ap_get_module_config(s->module_config,
+                                                     &jk_module);
+    return conf->uw_map;
+}
+
 /* ====================================================================== */
 /* Utility functions                                                      */
 /* ====================================================================== */
@@ -529,6 +608,9 @@
     s->write = ws_write;
     s->flush = ws_flush;
     s->add_log_items = ws_add_log_items;
+    s->next_vhost = ws_next_vhost;
+    s->vhost_to_text = ws_vhost_to_text;
+    s->vhost_to_uw_map = ws_vhost_to_uw_map;
 
     /* Clear RECO status */
     s->reco_status = RECO_NONE;
@@ -2488,6 +2570,7 @@
     jk_map_alloc(&jk_worker_properties);
     jk_map_put(jk_worker_properties, "ServerRoot", ap_server_root, NULL);
 
+    main_server = s;
     jk_log_fds = ap_make_table(p, 0);
 
     /* step through the servers and open each jk logfile

Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?rev=597872&r1=597871&r2=597872&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Sat Nov 24 08:21:53 2007
@@ -225,6 +225,7 @@
 };
 typedef struct apache_private_data apache_private_data_t;
 
+static server_rec *main_server = NULL;
 static jk_logger_t *main_log = NULL;
 static apr_hash_t *jk_log_fps = NULL;
 static jk_worker_env_t worker_env;
@@ -258,6 +259,12 @@
                                        const char *const *log_values,
                                        unsigned num_of_log_items);
 
+static void * JK_METHOD ws_next_vhost(void *d);
+
+static void JK_METHOD ws_vhost_to_text(void *d, char *buf, int len);
+
+static jk_uri_worker_map_t * JK_METHOD ws_vhost_to_uw_map(void *d);
+
 /* ========================================================================= */
 /* JK Service step callbacks                                                 */
 /* ========================================================================= */
@@ -482,6 +489,78 @@
     }
 }
 
+static void * JK_METHOD ws_next_vhost(void *d)
+{
+    server_rec *s = (server_rec *)d;
+    if (s == NULL)
+        return main_server;
+    return s->next;
+}
+
+static void JK_METHOD ws_vhost_to_text(void *d, char *buf, int len)
+{
+    server_rec *s = (server_rec *)d;
+    int used = 0;
+
+    if (s->server_hostname)
+        used += strlen(s->server_hostname);
+    if (!s->is_virtual) {
+        if (s->port)
+            used += strlen(":XXXXX");
+    }
+    else if (s->addrs) {
+        used += strlen(" [");
+        if (s->addrs->virthost)
+            used += strlen(s->addrs->virthost);
+        if (s->addrs->host_port)
+            used += strlen(":XXXXX");
+        used += strlen("]");
+    }
+
+    if (len < used && len > strlen("XXX")) {
+        strcpy(buf, "XXX");
+        return;
+    }
+
+    used = 0;
+
+    if (s->server_hostname) {
+        strcpy(buf + used, s->server_hostname);
+        used += strlen(s->server_hostname);
+    }
+    if (!s->is_virtual) {
+        if (s->port) {
+            sprintf(buf + used, ":%hu", s->port);
+            used = strlen(buf);
+        }
+    }
+    else if (s->addrs) {
+        strcpy(buf + used, " [");
+        used += strlen(" [");
+        if (s->addrs->virthost) {
+            strcpy(buf + used, s->addrs->virthost);
+            used += strlen(s->addrs->virthost);
+        }
+        if (s->addrs->host_port) {
+            sprintf(buf + used, ":%hu", s->addrs->host_port);
+            used = strlen(buf);
+        }
+        strcpy(buf + used, "]");
+        used += strlen("]");
+    }
+}
+
+static jk_uri_worker_map_t * JK_METHOD ws_vhost_to_uw_map(void *d)
+{
+    server_rec *s = (server_rec *)d;
+    jk_server_conf_t *conf = NULL;
+    if (s == NULL)
+        return NULL;
+    conf = (jk_server_conf_t *) ap_get_module_config(s->module_config,
+                                                     &jk_module);
+    return conf->uw_map;
+}
+
 /* ========================================================================= */
 /* Utility functions                                                         */
 /* ========================================================================= */
@@ -544,6 +623,9 @@
     s->write = ws_write;
     s->flush = ws_flush;
     s->add_log_items = ws_add_log_items;
+    s->next_vhost = ws_next_vhost;
+    s->vhost_to_text = ws_vhost_to_text;
+    s->vhost_to_uw_map = ws_vhost_to_uw_map;
 
     /* Clear RECO status */
     s->reco_status = RECO_NONE;
@@ -2786,6 +2868,7 @@
     }
 #endif
 
+    main_server = s;
     jk_log_fps = apr_hash_make(pconf);
 
     if (!s->is_virtual) {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org