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