You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by hg...@apache.org on 2001/02/09 09:48:42 UTC
cvs commit: jakarta-tomcat/src/native/mod_jk/apache2.0 Makefile.linux mod_jk.c
hgomez 01/02/09 00:48:42
Modified: src/native/mod_jk/apache2.0 Makefile.linux mod_jk.c
Log:
mod_jk.c adapted to the lastest Apache 2.0 API
Enjoy !
Revision Changes Path
1.5 +25 -26 jakarta-tomcat/src/native/mod_jk/apache2.0/Makefile.linux
Index: Makefile.linux
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/native/mod_jk/apache2.0/Makefile.linux,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Makefile.linux 2000/12/20 19:32:42 1.4
+++ Makefile.linux 2001/02/09 08:48:41 1.5
@@ -1,38 +1,37 @@
## You need to edit this file - configure later :-)
-APACHE_HOME=/usr/local/apache2.0
-OS=linux
-
## I assume this one is set up already
# JAVA_HOME=
-
-##
-
-AP20_INCL=-I${APACHE_HOME}/include/apr -I${APACHE_HOME}/include/apr-util -I${APACHE_HOME}/include
-
-JAVA_INCL=-I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OS}
-
-JAVA_LIB=-L${JAVA_HOME}/jre/lib/${ARCH} -L${JAVA_HOME}/lib/${ARCH}/native_threads
-
-CFLAGS=-DHAVE_CONFIG_H -g -fpic -DSHARED_MODULE -O2 -D_REENTRANT -pthread -DLINUX -Wall -DAPACHE2_SIGHACK
-
-SRCS=jk_ajp12_worker.c jk_connect.c jk_msg_buff.c jk_util.c jk_ajp13.c \
- jk_jni_worker.c jk_pool.c jk_worker.c jk_ajp13_worker.c jk_lb_worker.c \
- jk_sockbuf.c jk_map.c jk_uri_worker_map.c
+OS=linux
-OBJS=${patsubst %.c,%.o,${SRCS}}
+JAVA_INCL=-I ${JAVA_HOME}/include -I ${JAVA_HOME}/include/${OS}
+JAVA_LIB=-L ${JAVA_HOME}/jre/lib/${ARCH} -L ${JAVA_HOME}/lib/${ARCH}/native_threads
-%.o: ../common/%.c
- ${CC} -c ${CFLAGS} ${JAVA_INCL} ${AP20_INCL} $< -o $@
+#
+# I've built a RPM, named apache2 (ftp://ftp.falsehope.com/home/gomez/apache2/),
+# which postfix all apache2 stuff with 2, ie apxs = apxs2.
+# It will allow to have both apache 1.3 and 2.0 the same time on the system
+#
+#ifndef APXS
+APXS=/usr/sbin/apxs2
+#endif
+
+JK=../common
+SRCS=${JK}/jk_ajp12_worker.c ${JK}/jk_connect.c ${JK}/jk_msg_buff.c ${JK}/jk_util.c ${JK}/jk_ajp13.c \
+ ${JK}/jk_jni_worker.c ${JK}/jk_pool.c ${JK}/jk_worker.c ${JK}/jk_ajp13_worker.c ${JK}/jk_lb_worker.c \
+ ${JK}/jk_sockbuf.c ${JK}/jk_map.c ${JK}/jk_uri_worker_map.c
+
+LSRCS=jk_ajp12_worker.c jk_connect.c jk_msg_buff.c jk_util.c jk_ajp13.c \
+ jk_jni_worker.c jk_pool.c jk_worker.c jk_ajp13_worker.c jk_lb_worker.c \
+ jk_sockbuf.c jk_map.c jk_uri_worker_map.c
-.c.o:
- ${CC} -c ${CFLAGS} ${JAVA_INCL} ${AP20_INCL} -I../common $<
all: mod_jk.so
-mod_jk.so: ${OBJS} mod_jk.o
- $(CC) -shared -o mod_jk.so ${OBJS} mod_jk.o
+mod_jk.so:
+ $(APXS) -I ${JK} ${JAVA_INCL} -c -o mod_jk.la mod_jk.c $(SRCS)
+ mv .libs/mod_jk.so .
clean:
- rm *.o *.so
-
+ rm -f *.o *.so *.lo *.la *.slo ${JK}/*.o ${JK}/*.so ${JK}/*.lo ${JK}/*.la ${JK}/*.slo
+ rm -rf .libs
1.7 +80 -48 jakarta-tomcat/src/native/mod_jk/apache2.0/mod_jk.c
Index: mod_jk.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/native/mod_jk/apache2.0/mod_jk.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- mod_jk.c 2000/12/20 19:45:23 1.6
+++ mod_jk.c 2001/02/09 08:48:41 1.7
@@ -56,6 +56,7 @@
/***************************************************************************
* Description: Apache 2 plugin for Jakarta/Tomcat *
* Author: Gal Shachor <sh...@il.ibm.com> *
+ * Henri Gomez <hg...@slib.fr> *
* Version: $ $ *
***************************************************************************/
@@ -91,8 +92,10 @@
#define JK_MAGIC_TYPE ("application/x-jakarta-servlet")
#define NULL_FOR_EMPTY(x) ((x && !strlen(x)) ? NULL : x)
-module MODULE_VAR_EXPORT jk_module;
+/* module MODULE_VAR_EXPORT jk_module; */
+AP_DECLARE_DATA module jk_module;
+
typedef struct {
char *log_file;
int log_level;
@@ -328,10 +331,48 @@
REMOTE_HOST);
s->remote_host = NULL_FOR_EMPTY(s->remote_host);
-
s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
- s->server_name = (r->hostname ? r->server->server_hostname : r->hostname);
- s->server_port = r->server->port;
+
+ jk_log(main_log, JK_LOG_DEBUG,
+ "agsp=%u agsn=%s hostn=%s shostn=%s cbsport=%d sport=%d \n",
+ ap_get_server_port( r ),
+ ap_get_server_name( r ),
+ r->hostname,
+ r->server->server_hostname,
+ r->connection->base_server->port,
+ r->server->port
+ );
+
+#ifdef NOTNEEDEDFORNOW
+ /* Wrong: s->server_name = (char *)ap_get_server_name( r ); */
+ s->server_name= (char *)(r->hostname ? r->hostname :
+ r->server->server_hostname);
+
+
+ s->server_port= htons( r->connection->local_addr.sin_port );
+ /* Wrong: s->server_port = r->server->port; */
+
+
+ /* Winners: htons( r->connection->local_addr.sin_port )
+ (r->hostname ? r->hostname :
+ r->server->server_hostname),
+ */
+ /* printf( "Port %u %u %u %s %s %s %d %d \n",
+ ap_get_server_port( r ),
+ htons( r->connection->local_addr.sin_port ),
+ ntohs( r->connection->local_addr.sin_port ),
+ ap_get_server_name( r ),
+ (r->hostname ? r->hostname : r->server->server_hostname),
+ r->hostname,
+ r->connection->base_server->port,
+ r->server->port
+ );
+ */
+#else
+ s->server_name = (char *)ap_get_server_name( r );
+ s->server_port = r->server->port;
+#endif
+
s->server_software = ap_get_server_version();
s->method = (char *)r->method;
@@ -403,7 +444,7 @@
* Add the new worker to the alias map.
*/
char *old;
- map_put(conf->uri_to_context, context, worker, &old);
+ map_put(conf->uri_to_context, context, worker, (void **)&old);
return NULL;
}
@@ -474,7 +515,20 @@
static int jk_handler(request_rec *r)
{
- const char *worker_name = apr_table_get(r->notes, JK_WORKER_ID);
+ const char *worker_name;
+
+ if(strcmp(r->handler,JK_HANDLER)) /* not for me, try next handler */
+ return DECLINED;
+
+ if (1)
+ {
+ jk_server_conf_t *xconf =
+ (jk_server_conf_t *)ap_get_module_config(r->server->module_config, &jk_module);
+ jk_logger_t *xl = xconf->log ? xconf->log : main_log;
+ jk_log(xl, JK_LOG_DEBUG, "Into handler r->proxyreq=%d r->handler=%s r->notes=%d\n", r->proxyreq, r->handler, r->notes);
+ }
+
+ worker_name = apr_table_get(r->notes, JK_WORKER_ID);
/* If this is a proxy request, we'll notify an error */
if(r->proxyreq) {
@@ -530,6 +584,18 @@
&s,
l,
&is_recoverable_error);
+
+ if (s.content_read < s.content_length) {
+ /* Toss all further characters left to read fm client */
+ char *buff = apr_palloc(r->pool, 2048);
+ if (buff != NULL) {
+ int rd;
+ while ((rd = ap_get_client_block(r, buff, 2048)) > 0) {
+ s.content_read += rd;
+ }
+ }
+ }
+
#ifndef REUSE_WORKER
end->done(&end, l);
#endif
@@ -542,7 +608,7 @@
}
}
- return HTTP_INTERNAL_SERVER_ERROR;
+ return DECLINED;
}
static void *create_jk_config(apr_pool_t *p, server_rec *s)
@@ -607,13 +673,10 @@
static void jk_child_init(apr_pool_t *pconf,
server_rec *s)
{
- char *p = getenv("WAS_BORN_BY_APACHE");
jk_map_t *init_map = NULL;
jk_server_conf_t *conf =
(jk_server_conf_t *)ap_get_module_config(s->module_config, &jk_module);
- fprintf(stdout, "jk_child_init %s\n", p ? p : "NULL"); fflush(stdout);
-
if(conf->log_file && conf->log_level >= 0) {
if(!jk_open_file_logger(&(conf->log), conf->log_file, conf->log_level)) {
conf->log = NULL;
@@ -623,7 +686,6 @@
}
if(!uri_worker_map_alloc(&(conf->uw_map), conf->uri_to_context, conf->log)) {
- printf( "Memory error - uri worker alloc \n");
jk_error_exit(APLOG_MARK, APLOG_EMERG, s, "Memory error");
}
@@ -644,18 +706,10 @@
server_rec *s)
{
if(!s->is_virtual) {
- char *p = getenv("WAS_BORN_BY_APACHE");
jk_map_t *init_map = NULL;
jk_server_conf_t *conf =
(jk_server_conf_t *)ap_get_module_config(s->module_config, &jk_module);
if(!conf->was_initialized) {
- fprintf(stdout, "jk_post_config %s %s %d %d %s\n",
- s->server_hostname,
- s->server_admin,
- s,
- conf,
- p ? p : "NULL"); fflush(stdout);
-
conf->was_initialized = JK_TRUE;
if(conf->log_file && conf->log_level >= 0) {
if(!jk_open_file_logger(&(conf->log), conf->log_file, conf->log_level)) {
@@ -671,14 +725,10 @@
if(map_alloc(&init_map)) {
if(map_read_properties(init_map, conf->worker_file)) {
- if(!p) {
- putenv("WAS_BORN_BY_APACHE=true");
- return;
- } else {
+ ap_add_version_component(pconf, "mod_jk");
if(wc_open(init_map, conf->log)) {
return;
}
- }
}
}
@@ -711,39 +761,21 @@
static void jk_register_hooks(void)
{
-#ifdef WIN32
- ap_hook_post_config(jk_post_config,
- NULL,
- NULL,
- AP_HOOK_MIDDLE);
+ ap_hook_handler(jk_handler, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_post_config(jk_post_config,NULL,NULL,APR_HOOK_MIDDLE);
+ ap_hook_child_init(jk_child_init,NULL,NULL,APR_HOOK_MIDDLE);
+ ap_hook_translate_name(jk_translate,NULL,NULL,APR_HOOK_FIRST);
-#else
- ap_hook_child_init(jk_child_init,
- NULL,
- NULL,
- AP_HOOK_MIDDLE);
-#endif
- ap_hook_translate_name(jk_translate,
- NULL,
- NULL,
- AP_HOOK_FIRST);
}
-static const handler_rec jk_handlers[] =
+module AP_MODULE_DECLARE_DATA jk_module =
{
- { JK_MAGIC_TYPE, jk_handler },
- { JK_HANDLER, jk_handler },
- { NULL }
-};
-
-module MODULE_VAR_EXPORT jk_module =
-{
STANDARD20_MODULE_STUFF,
NULL, /* dir config creater */
NULL, /* dir merger --- default is to override */
create_jk_config, /* server config */
merge_jk_config, /* merge server config */
jk_cmds, /* command ap_table_t */
- jk_handlers, /* handlers */
jk_register_hooks /* register hooks */
};
+