Author: hgomez Date: Fri Apr 20 00:24:47 2007 New Revision: 530674 URL: http://svn.apache.org/viewvc?view=rev&rev=530674 Log: Works in progress for i5/OS V5R4 adaptation. Still need to fix the INIT stage
Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c tomcat/connectors/trunk/jk/native/common/jk_jni_worker.c tomcat/connectors/trunk/jk/native/common/jk_map.c tomcat/connectors/trunk/jk/native/common/jk_msg_buff.c tomcat/connectors/trunk/jk/native/common/jk_msg_buff.h tomcat/connectors/trunk/jk/native/common/jk_util.c tomcat/connectors/trunk/jk/xdocs/webserver_howto/apache.xml 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?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original) +++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Fri Apr 20 00:24:47 2007 @@ -41,7 +41,7 @@ #include "util_script.h" #include "ap_mpm.h" -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) #include "ap_charset.h" #include "util_charset.h" /* ap_hdrs_from_ascii */ #endif @@ -294,7 +294,7 @@ ap_set_content_type(r, tmp); } else if (!strcasecmp(header_names[h], "Location")) { -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) /* Fix escapes in Location Header URL */ ap_fixup_escapes((char *)header_values[h], strlen(header_values[h]), ap_hdrs_from_ascii); @@ -348,7 +348,7 @@ } if (p->read_body_started) { -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) int long rv = OK; if (rv = ap_change_request_body_xlate(p->r, 65535, 65535)) { /* turn off request body translation */ ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_CRIT, 0, NULL, @@ -374,7 +374,7 @@ static void JK_METHOD ws_flush(jk_ws_service_t *s) { -#ifndef AS400 +#if defined(AS400) && !defined(AS400_UTF8) if (s && s->ws_private) { apache_private_data_t *p = s->ws_private; ap_rflush(p->r); @@ -400,7 +400,7 @@ static int JK_METHOD ws_write(jk_ws_service_t *s, const void *b, unsigned int l) { -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) int rc; #endif @@ -422,12 +422,12 @@ } } if (p->r->header_only) { -#ifndef AS400 +#if defined(AS400) && !defined(AS400_UTF8) ap_rflush(p->r); #endif return JK_TRUE; } -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) /* turn off response body translation */ rc = ap_change_response_body_xlate(p->r, 65535, 65535); if (rc) { @@ -593,7 +593,7 @@ s->content_length = get_content_length(r); s->is_chunked = r->read_chunked; s->no_more_chunks = 0; -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) /* Get the query string that is not translated to EBCDIC */ s->query_string = ap_get_original_query_string(r); #else @@ -2795,17 +2795,17 @@ jk_server_conf_t *sconf = (jk_server_conf_t *)ap_get_module_config(srv->module_config, &jk_module); /*** - * on iSeries, the web server is 'HTTP Powered by Apache 2', as such it differs from the regular + * on iSeries, the web server is 'HTTP Powered by Apache 2', as such it differs from the regular * implementations found on others boxes. - * + * * One of this difference is that the life cycle seems different and we discovered that on such platform * we need to initialize the jk log with the plog instead of pconf. - * - * We're waiting for more feedback from Rochester iSeries Labs... - * + * + * We're waiting for more feedback from Rochester iSeries Labs... + * ***/ - -#ifdef AS400 + +#if defined(AS400) && !defined(AS400_UTF8) if (open_jklog(srv, plog)) #else if (open_jklog(srv, pconf)) Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c Fri Apr 20 00:24:47 2007 @@ -28,7 +28,7 @@ #include "jk_connect.h" #include "jk_util.h" #include "jk_sockbuf.h" -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) #include "util_ebcdic.h" #include <string.h> #endif @@ -61,11 +61,11 @@ static int ajpv12_mark(ajp12_endpoint_t * p, unsigned char type); -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) static int ajpv12_sendasciistring(ajp12_endpoint_t * p, char *buffer); #endif -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) static int ajpv12_sendstring(ajp12_endpoint_t * p, char *buffer); #else static int ajpv12_sendstring(ajp12_endpoint_t * p, const char *buffer); @@ -96,7 +96,7 @@ */ JK_TRACE_ENTER(l); - + if (is_error) *is_error = JK_HTTP_SERVER_ERROR; if (!e || !e->endpoint_private || !s || !is_error) { @@ -301,7 +301,7 @@ } } -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) static int ajpv12_sendasciistring(ajp12_endpoint_t * p, const char *buffer) { int bufferlen; @@ -320,7 +320,7 @@ int bufferlen; if (buffer && (bufferlen = (int)strlen(buffer))) { -#if defined(AS400) || defined(_OSD_POSIX) +#if (defined(AS400) && !defined(AS400_UTF8)) || defined(_OSD_POSIX) char buf[2048]; if (bufferlen < 2048) { memcpy(buf, buffer, bufferlen); @@ -377,7 +377,7 @@ ajpv12_sendstring(p, s->server_name) && ajpv12_sendstring(p, 0) && /* doc root */ ajpv12_sendstring(p, 0) && /* path info */ ajpv12_sendstring(p, 0) && /* path translated */ -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) ajpv12_sendasciistring(p, s->query_string) && #else ajpv12_sendstring(p, s->query_string) && @@ -387,14 +387,14 @@ ajpv12_sendstring(p, s->remote_user) && ajpv12_sendstring(p, s->auth_type) && ajpv12_sendint(p, s->server_port) && -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) ajpv12_sendasciistring(p, s->method) && #else ajpv12_sendstring(p, s->method) && #endif ajpv12_sendstring(p, s->req_uri) && ajpv12_sendstring(p, 0) && /* */ ajpv12_sendstring(p, 0) && /* SCRIPT_NAME */ -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) ajpv12_sendasciistring(p, s->server_name) && #else ajpv12_sendstring(p, s->server_name) && @@ -527,7 +527,7 @@ "ajpv12_handle_response, error reading header line"); return JK_FALSE; } -#if defined(AS400) || defined(_OSD_POSIX) +#if (defined(AS400) && !defined(AS400_UTF8)) || defined(_OSD_POSIX) jk_xlate_from_ascii(line, strlen(line)); #endif Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Fri Apr 20 00:24:47 2007 @@ -29,7 +29,7 @@ #include "jk_ajp14.h" #include "jk_ajp_common.h" #include "jk_connect.h" -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) #include "util_ebcdic.h" #endif #if defined(NETWARE) && defined(__NOVELL_LIBC__) @@ -446,7 +446,7 @@ } if (s->query_string) { if (jk_b_append_byte(msg, SC_A_QUERY_STRING) || -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) jk_b_append_asciistring(msg, s->query_string)) { #else jk_b_append_string(msg, s->query_string)) { @@ -594,7 +594,7 @@ d->msg = (char *)jk_b_get_string(msg); if (d->msg) { -#if defined(AS400) || defined(_OSD_POSIX) +#if (defined(AS400) && !defined(AS400_UTF8)) || defined(_OSD_POSIX) jk_xlate_from_ascii(d->msg, strlen(d->msg)); #endif } @@ -642,7 +642,7 @@ JK_TRACE_EXIT(l); return JK_FALSE; } -#if defined(AS400) || defined(_OSD_POSIX) +#if (defined(AS400) && !defined(AS400_UTF8)) || defined(_OSD_POSIX) jk_xlate_from_ascii(d->header_names[i], strlen(d->header_names[i])); #endif @@ -657,7 +657,7 @@ return JK_FALSE; } -#if defined(AS400) || defined(_OSD_POSIX) +#if (defined(AS400) && !defined(AS400_UTF8)) || defined(_OSD_POSIX) jk_xlate_from_ascii(d->header_values[i], strlen(d->header_values[i])); #endif Modified: tomcat/connectors/trunk/jk/native/common/jk_jni_worker.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_jni_worker.c?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_jni_worker.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_jni_worker.c Fri Apr 20 00:24:47 2007 @@ -204,7 +204,7 @@ /* Duplicate string and convert it to ASCII on EBDIC based systems - Needed for at least AS/400 and BS2000 but what about other EBDIC systems ? + Needed for at least AS/400 (before V5R4 ?) and BS2000 but what about other EBDIC systems ? */ static void *strdup_ascii(jk_pool_t *p, char *s) { @@ -281,7 +281,7 @@ /* we are attached now */ - /* + /* * When we call the JVM we cannot know what happens * So we can not recover !!! */ @@ -561,7 +561,7 @@ JK_TRACE_EXIT(l); return JK_FALSE; } - + p = (jni_endpoint_t *) calloc(1, sizeof(jni_endpoint_t)); if (p) { p->attached = JK_FALSE; @@ -1206,13 +1206,13 @@ #ifdef LINUX linux_signal_hack(); -#endif +#endif - if(0 == (*(p->jvm))->AttachCurrentThread(p->jvm, -#ifdef JNI_VERSION_1_2 + if(0 == (*(p->jvm))->AttachCurrentThread(p->jvm, +#ifdef JNI_VERSION_1_2 (void **) #endif - &rc, + &rc, NULL)) { return rc; } Modified: tomcat/connectors/trunk/jk/native/common/jk_map.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_map.c?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_map.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_map.c Fri Apr 20 00:24:47 2007 @@ -21,7 +21,7 @@ * Author: Mladen Turk <[EMAIL PROTECTED]> * * Version: $Revision$ * ***************************************************************************/ -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) #include "apr_xlate.h" #endif @@ -308,7 +308,7 @@ #if defined(AS400) || defined(_REENTRANT) char *lasts; #endif - + if (!list_len) return 0; @@ -339,7 +339,7 @@ index++; } else - break; + break; } return index; } @@ -487,7 +487,7 @@ FILE *fp; if ((rc = stat(f, &statbuf)) == -1) return JK_FALSE; -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) fp = fopen(f, "r, o_ccsid=0"); #else fp = fopen(f, "r"); @@ -545,7 +545,7 @@ static void trim_prp_comment(char *prp) { -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) char *comment; /* lots of lines that translate a '#' realtime deleted */ comment = strchr(prp, *APR_NUMBERSIGN); @@ -853,7 +853,7 @@ FILE *fp; if ((rc = stat(f, &statbuf)) == -1) return JK_FALSE; -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) fp = fopen(f, "r, o_ccsid=0"); #else fp = fopen(f, "r"); Modified: tomcat/connectors/trunk/jk/native/common/jk_msg_buff.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_msg_buff.c?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_msg_buff.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_msg_buff.c Fri Apr 20 00:24:47 2007 @@ -84,8 +84,8 @@ void jk_b_end(jk_msg_buf_t *msg, int protoh) { - /* - * Ugly way to set the size in the right position + /* + * Ugly way to set the size in the right position */ int hlen = msg->len - 4; @@ -137,7 +137,7 @@ return 0; } -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) int jk_b_append_asciistring(jk_msg_buf_t *msg, const char *param) { int len; @@ -182,7 +182,7 @@ /* We checked for space !! */ strncpy((char *)msg->buf + msg->len, param, len + 1); /* including \0 */ -#if defined(AS400) || defined(_OSD_POSIX) +#if (defined(AS400) && !defined(AS400_UTF8)) || defined(_OSD_POSIX) /* convert from EBCDIC if needed */ jk_xlate_to_ascii((char *)msg->buf + msg->len, len + 1); #endif @@ -300,7 +300,7 @@ -/** Helpie dump function +/** Helpie dump function */ void jk_dump_buff(jk_logger_t *l, const char *file, @@ -312,7 +312,7 @@ char *current; int j; int len = msg->len; - + if (l == NULL) return; if (l->level != JK_LOG_TRACE_LEVEL && len > 1024) @@ -341,7 +341,7 @@ if ((i + j) >= len) x = 0; if (x > 0x20 && x < 0x7F) { -#ifdef USE_CHARSET_EBCDIC +#ifdef USE_CHARSET_EBCDIC *current = x; jk_xlate_from_ascii(current, 1); current++; Modified: tomcat/connectors/trunk/jk/native/common/jk_msg_buff.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_msg_buff.h?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_msg_buff.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_msg_buff.h Fri Apr 20 00:24:47 2007 @@ -42,7 +42,7 @@ - one parameter - use a structure for more. The method is encoded as part of the request - one or no result - - + - @@ -80,7 +80,7 @@ void jk_b_end(jk_msg_buf_t *msg, int protoh); /* - * Recycle the buffer - z for a new invocation + * Recycle the buffer - z for a new invocation */ void jk_b_reset(jk_msg_buf_t *msg); @@ -97,7 +97,7 @@ int jk_b_append_string(jk_msg_buf_t *msg, const char *param); -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) int jk_b_append_asciistring(jk_msg_buf_t *msg, const char *param); #endif @@ -106,7 +106,7 @@ /* -------------------- Decoding -------------------- */ -/** Get a byte from the current position +/** Get a byte from the current position */ unsigned char jk_b_get_byte(jk_msg_buf_t *msg); @@ -130,11 +130,11 @@ */ unsigned char jk_b_pget_byte(jk_msg_buf_t *msg, int pos); -/** Get an int from an arbitrary position +/** Get an int from an arbitrary position */ unsigned short jk_b_pget_int(jk_msg_buf_t *msg, int pos); -/** Get a long from an arbitrary position +/** Get a long from an arbitrary position */ unsigned long jk_b_pget_long(jk_msg_buf_t *msg, int pos); Modified: tomcat/connectors/trunk/jk/native/common/jk_util.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.c?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_util.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_util.c Fri Apr 20 00:24:47 2007 @@ -409,7 +409,7 @@ rc->level = level; rc->log_fmt = NULL; rc->logger_private = p; -#ifdef AS400 +#if defined(AS400) && !defined(AS400_UTF8) p->logfile = fopen(file, "a+, o_ccsid=0"); #else p->logfile = fopen(file, "a+"); Modified: tomcat/connectors/trunk/jk/xdocs/webserver_howto/apache.xml URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/webserver_howto/apache.xml?view=diff&rev=530674&r1=530673&r2=530674 ============================================================================== --- tomcat/connectors/trunk/jk/xdocs/webserver_howto/apache.xml (original) +++ tomcat/connectors/trunk/jk/xdocs/webserver_howto/apache.xml Fri Apr 20 00:24:47 2007 @@ -90,7 +90,7 @@ Netware </li> <li> -iSeries V5R1 and V5R2 with Apache 2.0.39. Be sure to have the latest Apache PTF installed. +i5/OS V5R4 (System I) with Apache 2.0.58. Be sure to have the latest Apache PTF installed. </li> <li> Tomcat 3.2.x, Tomcat 3.3.x, Tomcat 4.0.x, Tomcat 4.1.x, Tomcat 5.0.x, Tomcat 5.5.x and Tomcat 6. @@ -110,7 +110,7 @@ </p> <p> -The <b>ajp12</b> has been <b>deprecated</b> with Tomcat 3.3.x and you should use instead +The <b>ajp12</b> has been <b>deprecated</b> with Tomcat 3.3.x and you should use instead <b>ajp13</b> which is the only ajp protocol known by Tomcat 4.x, 5 and 5.5 and Tomcat 6. </p> @@ -250,7 +250,7 @@ </source> <p> -Note: this file may also be generated as $TOMCAT_HOME/conf/auto/mod_jk.conf +Note: this file may also be generated as $TOMCAT_HOME/conf/auto/mod_jk.conf </p> <p> @@ -1008,28 +1008,41 @@ </p> </section> -<section name="Building mod_jk for Apache on iSeries/OS400"> +<section name="Building mod_jk for Apache on System I - i5/OS (OS400)"> <p> -Since OS400 V4R5, iSeries (AS/400) has used Apache 2.0 as their primary web server, +Since OS400 V4R5, System I (AS/400) has used Apache 2.0 as their primary web server, replacing the old IBM webserver. -It's now possible to build mod_jk on iSeries thanks to the help of the IBM -Rochester Labs which has provided information and patches -to adapt mod_jk to OS400. +It's now possible to build mod_jk on System I thanks to the help of the IBM +Rochester Labs which has provided information and patches to adapt mod_jk to i5/OS. </p> <p> -You should have at least Apache 2.0.48 (product 5722DG1), a C Compiler and IFS. -Apache 2.0.48 is provided with the most recent set of PTFs for the iSeries Apache +You should have at least Apache 2.0.58 (product 5722DG1), a C Compiler and IFS. +Apache 2.0.58 is provided with the most recent set of PTFs for the iSeries Apache server, which can be found at <a href="http://www.ibm.com/servers/eserver/iseries/software/http/"> http://www.ibm.com/servers/eserver/iseries/software/http/</a> </p> <p> -The all latest Apache 2 for OS400 V5R3 is now 2.0.52 (2005/03/23). -Be sure to have the latest PTF loaded (SI17402/SI17061) if you want -to make use of jk 1.2.8 and higher. +The all latest Apache 2 for i5/OS V5R3 (or V5R4) is now 2.0.58 (as of 2007/04/17). +Be sure to have the latest PTFs loaded if you want to make use of jk 1.2.15 and higher. +NB: The latest mod_jk known to work on i5/OS V5R3 was 1.2.19. </p> +<p> +New in i5/OS V5R4, UTF is required, also for Apache modules, as such Apache modules do not require +translations to/from EBCDIC but works should be done to port mod_jk 1.2.23 (and higher) to V5R4. + +From the V5R4 Infocenter : + +As of i5/OS(tm) V5R4, modules must be recompiled with a UTF locale. This creates an environment where locale-dependent C runtime functions assume +that string data is encoded in UTF-8. Any hardcoded constants can be encoded in UTF-8 by adding a #pragma convert(1208) statement in the module. +Additionally, input data from the client will no longer be converted to EBCDIC but will be passed as-is. +Output data sent from the module is not converted either so it must be encoded in ASCII or UTF8 as required. +APR and HTTP APIs as of V5R4, expect data in UTF-8. Note that several APIs have additional functions that allow a CCSID to be set to +indicate the encoding of the parameters being passed. Conversion functions between UTF-8 and EBCDIC have been added. +Be sure to review APIs used by your module to be aware of current changes. +</p> <p> -To configure mod_jk on iSeries use the CL source provided with the mod_jk source. +To configure mod_jk on System I use the CL source provided with the mod_jk source. </p> <ul> <li> @@ -1039,10 +1052,10 @@ Create a directory in IFS, ie /home/apache </li> <li> -Send the whole jk source directory to iSeries directory via FTP. +Send the whole jk source directory to System I directory via FTP. </li> <li> -Then go to the iSeries command line : +Then go to the System I command line : </li> </ul> <screen> @@ -1082,7 +1095,11 @@ <type5250>CRTDUPOBJ OBJ(MOD_JK) FROMLIB(MOD_JK) OBJTYPE(*SRVPGM) TOLIB(QHTTPSVR) NEWOBJ(MOD_JK)</type5250> </screen> <p> -Next, you should restart your Apache 2.0 server and enjoy this piece of OpenSource on iSeries. +Next, you should restart your Apache 2.0 instance and enjoy this piece of OpenSource on System I. +<screen> +<note>ENDTCPSVR SERVER(*HTTP) HTTPSVR(MYSERVER)</note> +<note>STRTCPSVR SERVER(*HTTP) HTTPSVR(MYSERVER)</note> +</screen> </p> </section> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]