You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by an...@apache.org on 2004/03/26 14:52:39 UTC

cvs commit: jakarta-tomcat-connectors/jk/native2/server/dsapi jk_dsapi_plugin.c config.h

andya       2004/03/26 05:52:39

  Modified:    jk/native2/server/dsapi jk_dsapi_plugin.c config.h
  Log:
  Various changes to achieve Linux compatibility.
  
  Revision  Changes    Path
  1.7       +759 -779  jakarta-tomcat-connectors/jk/native2/server/dsapi/jk_dsapi_plugin.c
  
  Index: jk_dsapi_plugin.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/dsapi/jk_dsapi_plugin.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jk_dsapi_plugin.c	24 Feb 2004 08:44:42 -0000	1.6
  +++ jk_dsapi_plugin.c	26 Mar 2004 13:52:39 -0000	1.7
  @@ -61,46 +61,55 @@
   /* Domino DSAPI filter definitions */
   #include "dsapifilter.h"
   
  -#ifdef TESTING
  -#define LOGGER				"logger.printf"
  +#if defined(TESTING)
  +#define LOGGER              "logger.printf"
   int JK_METHOD jk2_logger_printf_factory(jk_env_t *env, jk_pool_t *pool, jk_bean_t *result, const char *type, const char *name);
  +#elif defined(WIN32)
  +#define LOGGER              "logger.win32"
   #else
  -#define LOGGER				"logger.win32"
  +#define LOGGER              "logger.file"
   #endif
   
  +#ifdef WIN32
   static char  libFileName[MAX_PATH];
   static char  iniFileName[MAX_PATH];
  -static int   iniFileUsed		= JK_FALSE;
  -static int   isInited			= JK_FALSE;
  +#define INI_NAME iniFileName
  +#else
  +#define INI_NAME "libtomcat2" PROPERTIES_EXT
  +#endif
  +static int   iniFileUsed        = JK_FALSE;
  +static int   isInited           = JK_FALSE;
  +
  +static const char *tomcatStart  = NULL;
  +static const char *tomcatStop   = NULL;
  +static const char *workersFile  = NULL;
  +static const char *serverRoot   = NULL;
  +static int tomcatTimeout        = TOMCAT_STARTSTOP_TO;
   
  -static const char *tomcatStart	= NULL;
  -static const char *tomcatStop	= NULL;
  -static const char *workersFile	= NULL;
  -static const char *serverRoot	= NULL;
  -static int tomcatTimeout		= TOMCAT_STARTSTOP_TO;
  +static const char *crlf         = "\r\n";
   
  -static const char *crlf			= "\r\n";
  +#define WORKPOOL globalPool
   
   static jk_workerEnv_t *workerEnv;
   static apr_pool_t *jk_globalPool;
   
   /* Per request private data */
   typedef struct private_ws {
  -	/* These get passed in by Domino and are used to access various
  -	 * Domino methods and data.
  -	 */
  -	FilterContext		*context;
  -	FilterParsedRequest	*reqData;
  -
  -	/* True iff the response headers have been sent
  -	 */
  -	int					responseStarted;
  -
  -	/* Current pointer into and remaining size
  -	 * of request body data
  -	 */
  -	char				*reqBuffer;
  -	unsigned int		reqSize;
  +    /* These get passed in by Domino and are used to access various
  +     * Domino methods and data.
  +     */
  +    FilterContext       *context;
  +    FilterParsedRequest *reqData;
  +
  +    /* True iff the response headers have been sent
  +     */
  +    int                 responseStarted;
  +
  +    /* Current pointer into and remaining size
  +     * of request body data
  +     */
  +    char                *reqBuffer;
  +    unsigned int        reqSize;
   
   } private_ws_t;
   
  @@ -110,20 +119,20 @@
   #define noCaseMemCmp(ci, cj, l) _memicmp((void *) (ci), (void *) (cj), (l))
   #else
   static int noCaseMemCmp(const char *ci, const char *cj, int len) {
  -	if (0 == memcmp(ci, cj, len)) {
  -		return 0;
  -	}
  -
  -	while (len > 0) {
  -		int cmp = tolower(*ci) - tolower(*cj);
  -		if (cmp != 0) {
  -			return cmp;
  -		}
  -		ci++;
  -		cj++;
  -		len--;
  -	}
  -	return 0;
  +    if (0 == memcmp(ci, cj, len)) {
  +        return 0;
  +    }
  +
  +    while (len > 0) {
  +        int cmp = tolower(*ci) - tolower(*cj);
  +        if (cmp != 0) {
  +            return cmp;
  +        }
  +        ci++;
  +        cj++;
  +        len--;
  +    }
  +    return 0;
   }
   #endif
   
  @@ -133,144 +142,138 @@
   #define noCaseStrCmp(si, sj) _stricmp((void *) (si), (void *) (sj))
   #else
   static int noCaseStrCmp(const char *si, const char *sj) {
  -	if (0 == strcmp(si, sj)) {
  -		return 0;
  -	}
  -
  -	while (*si && tolower(*si) == tolower(*sj)) {
  -		si++;
  -		sj++;
  -	}
  +    if (0 == strcmp(si, sj)) {
  +        return 0;
  +    }
  +
  +    while (*si && tolower(*si) == tolower(*sj)) {
  +        si++;
  +        sj++;
  +    }
   
  -	return tolower(*si) - tolower(*sj);
  +    return tolower(*si) - tolower(*sj);
   }
   #endif
   
   /* Case insensitive substring search.
  - * str		string to search
  - * slen		length of string to search
  - * ptn		pattern to search for
  - * plen		length of pattern
  - * returns	1 if there's a match otherwise 0
  + * str      string to search
  + * slen     length of string to search
  + * ptn      pattern to search for
  + * plen     length of pattern
  + * returns  1 if there's a match otherwise 0
    */
   static int scanPath(const char *str, int slen, const char *ptn, int plen) {
  -	const char *sp = str;
  +    const char *sp = str;
   
  -	while (slen >= plen) {
  -		/* We're looking for a match for the specified string bounded by
  -		 * the start of the string, \ or / at the left and the end of the
  -		 * string, \ or / at the right. We look for \ as well as / on the
  -		 * suspicion that a Windows hosted server might accept URIs
  -		 * containing \.
  -		 */
  -		if (noCaseMemCmp(sp, ptn, plen) == 0 &&
  -			(sp == str || sp[-1] == '\\' || sp[-1] == '/') &&
  -			(slen == plen || sp[plen] == '\\' || sp[plen] == '/')) {
  -			return 1;
  -		}
  -
  -		slen--;
  -		sp++;
  -	}
  -	return 0;
  +    while (slen >= plen) {
  +        /* We're looking for a match for the specified string bounded by
  +         * the start of the string, \ or / at the left and the end of the
  +         * string, \ or / at the right. We look for \ as well as / on the
  +         * suspicion that a Windows hosted server might accept URIs
  +         * containing \.
  +         */
  +        if (noCaseMemCmp(sp, ptn, plen) == 0 &&
  +            (sp == str || sp[-1] == '\\' || sp[-1] == '/') &&
  +            (slen == plen || sp[plen] == '\\' || sp[plen] == '/')) {
  +            return 1;
  +        }
  +
  +        slen--;
  +        sp++;
  +    }
  +    return 0;
   }
   
   #ifdef NO_CAPI
   /* Alternative to the Domino function */
   static void AddInLogMessageText(char *msg, unsigned short code, ...) {
  -	va_list ap;
  +    va_list ap;
  +
  +    if (code != NOERROR) {
  +        printf("Error %d: ", code);
  +    }
   
  -	if (code != NOERROR) {
  -		printf("Error %d: ", code);
  -	}
  -
  -	va_start(ap, code);
  -	vprintf(msg, ap);
  -	va_end(ap);
  -	printf("\n");
  +    va_start(ap, code);
  +    vprintf(msg, ap);
  +    va_end(ap);
  +    printf("\n");
   }
   #endif
   
   #ifdef _DEBUG
   static void _printf(const char *msg, ...) {
  -	char buf[512];		/* dangerous fixed size buffer */
  -	va_list ap;
  -	va_start(ap, msg);
  -	vsprintf(buf, msg, ap);
  -	va_end(ap);
  -	AddInLogMessageText("Debug: %s", NOERROR, buf);
  +    char buf[512];      /* dangerous fixed size buffer */
  +    va_list ap;
  +    va_start(ap, msg);
  +    vsprintf(buf, msg, ap);
  +    va_end(ap);
  +    AddInLogMessageText("Debug: %s", NOERROR, buf);
   }
   #endif
   
   /* Get the value of a server (CGI) variable as a string
    */
   static int getVariable(struct jk_env *env, jk_ws_service_t *s, char *hdrName,
  -						 char *buf, DWORD bufsz, char **dest, const char *dflt) {
  -	int errID;
  -	private_ws_t *ws = (private_ws_t *) s->ws_private;
  -
  -	if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID)) {
  -		*dest = s->pool->pstrdup(env, s->pool, buf);
  -	} else {
  -		*dest = s->pool->pstrdup(env, s->pool, dflt);
  -	}
  +                         char *buf, unsigned int bufsz, char **dest, const char *dflt) {
  +    int errID;
  +    private_ws_t *ws = (private_ws_t *) s->ws_private;
   
  -	/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "%s=%s\n", hdrName, *dest); */
  +    if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID)) {
  +        *dest = s->pool->pstrdup(env, s->pool, buf);
  +    } else {
  +        *dest = s->pool->pstrdup(env, s->pool, dflt);
  +    }
   
  -	return JK_TRUE;
  +    return JK_TRUE;
   }
   
   /* Get the value of a server (CGI) variable as an integer
    */
   static int getVariableInt(struct jk_env *env, jk_ws_service_t *s, char *hdrName,
  -						char *buf, DWORD bufsz, int *dest, int dflt) {
  -	int errID;
  -	private_ws_t *ws = (private_ws_t *) s->ws_private;
  -
  -	if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID)) {
  -		*dest = atoi(buf);
  -	} else {
  -		*dest = dflt;
  -	}
  +                        char *buf, unsigned int bufsz, long *dest, long dflt) {
  +    int errID;
  +    private_ws_t *ws = (private_ws_t *) s->ws_private;
   
  -	/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "%s=%d\n", hdrName, *dest); */
  +    if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID)) {
  +        *dest = atol(buf);
  +    } else {
  +        *dest = dflt;
  +    }
   
  -	return JK_TRUE;
  +    return JK_TRUE;
   }
   
   /* Get the value of a server (CGI) variable as an integer
    */
   static int getVariableBool(struct jk_env *env, jk_ws_service_t *s, char *hdrName,
  -							char *buf, DWORD bufsz, int *dest, int dflt) {
  -	int errID;
  -	private_ws_t *ws = (private_ws_t *) s->ws_private;
  -
  -	if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID)) {
  -		if (isdigit(buf[0])) {
  -			*dest = atoi(buf) != 0;
  -		} else if (noCaseStrCmp(buf, "yes") == 0 || noCaseStrCmp(buf, "on") == 0) {
  -			*dest = 1;
  -		} else {
  -			*dest = 0;
  -		}
  -	} else {
  -		*dest = dflt;
  -	}
  -
  -	/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "%s=%d\n", hdrName, *dest); */
  +                            char *buf, unsigned int bufsz, int *dest, int dflt) {
  +    int errID;
  +    private_ws_t *ws = (private_ws_t *) s->ws_private;
  +
  +    if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID)) {
  +        if (isdigit(buf[0])) {
  +            *dest = atoi(buf) != 0;
  +        } else if (noCaseStrCmp(buf, "yes") == 0 || noCaseStrCmp(buf, "on") == 0) {
  +            *dest = 1;
  +        } else {
  +            *dest = 0;
  +        }
  +    } else {
  +        *dest = dflt;
  +    }
   
  -	return JK_TRUE;
  +    return JK_TRUE;
   }
   
   /* A couple of utility macros to supply standard arguments to getVariable() and
    * getVariableInt().
    */
  -#define GETVARIABLE(name, dest, dflt)		\
  -	getVariable(env, s, (name), workBuf, sizeof(workBuf), (dest), (dflt))
  -#define GETVARIABLEINT(name, dest, dflt)	\
  -	getVariableInt(env, s, (name), workBuf, sizeof(workBuf), (dest), (dflt))
  -#define GETVARIABLEBOOL(name, dest, dflt)	\
  -	getVariableBool(env, s, (name), workBuf, sizeof(workBuf), (dest), (dflt))
  +#define GETVARIABLE(name, dest, dflt)       \
  +    getVariable(env, s, (name), workBuf, sizeof(workBuf), (dest), (dflt))
  +#define GETVARIABLEINT(name, dest, dflt)    \
  +    getVariableInt(env, s, (name), workBuf, sizeof(workBuf), (dest), (dflt))
  +#define GETVARIABLEBOOL(name, dest, dflt)   \
  +    getVariableBool(env, s, (name), workBuf, sizeof(workBuf), (dest), (dflt))
   
   /* Return 1 iff the supplied string contains "web-inf" (in any case
    * variation. We don't allow URIs containing web-inf, although
  @@ -279,8 +282,8 @@
    * of the supplied URI
    */
   static int badURI(const char *uri) {
  -	static const char *wi = "web-inf";
  -	return scanPath(uri, strlen(uri), wi, strlen(wi));
  +    static const char *wi = "web-inf";
  +    return scanPath(uri, strlen(uri), wi, strlen(wi));
   }
   
   /* Replacement for strcat() that updates a buffer pointer. It's
  @@ -289,49 +292,49 @@
    * strcat() has to count from start of the string each time.
    */
   static void append(char **buf, const char *str) {
  -	int l = strlen(str);
  -	memcpy(*buf, str, l);
  -	(*buf)[l] = '\0';
  -	*buf += l;
  +    int l = strlen(str);
  +    memcpy(*buf, str, l);
  +    (*buf)[l] = '\0';
  +    *buf += l;
   }
   
   /* Allocate space for a string given a start pointer and an end pointer
    * and return a pointer to the allocated, copied string.
    */
   static char *subStr(jk_env_t *env, jk_pool_t *pool, const char *start, const char *end) {
  -	char *out = NULL;
  +    char *out = NULL;
   
  -	if (start != NULL && end != NULL && end > start) {
  -		int len = end - start;
  -		if (out = pool->alloc(env, pool, len + 1), NULL != out) {
  -			memcpy(out, start, len);
  -			out[len] = '\0';
  -		}
  -	}
  -	return out;
  +    if (start != NULL && end != NULL && end > start) {
  +        int len = end - start;
  +        if (out = pool->alloc(env, pool, len + 1), NULL != out) {
  +            memcpy(out, start, len);
  +            out[len] = '\0';
  +        }
  +    }
  +    return out;
   }
   
   /* Like subStr() but use a static buffer if possible.
    */
   static char *smartSubStr(jk_env_t *env, jk_pool_t *pool, char **bufp, int *bufSz,
  -							const char *start, const char *end) {
  -	int len = end - start;
  -	if (len < *bufSz) {
  -		char *rv = *bufp;
  -		memcpy(rv, start, len);
  -		rv[len++] = '\0';
  -		/* Adjust buffer pointer, length */
  -		*bufp  += len;
  -		*bufSz -= len;
  -		return rv;
  -	} else {
  -		return subStr(env, pool, start, end);
  -	}
  +                            const char *start, const char *end) {
  +    int len = end - start;
  +    if (len < *bufSz) {
  +        char *rv = *bufp;
  +        memcpy(rv, start, len);
  +        rv[len++] = '\0';
  +        /* Adjust buffer pointer, length */
  +        *bufp  += len;
  +        *bufSz -= len;
  +        return rv;
  +    } else {
  +        return subStr(env, pool, start, end);
  +    }
   }
   
   static int JK_METHOD cbInit(struct jk_env *env, jk_ws_service_t *s,
  -							struct jk_worker *w, void *context) {
  -	return JK_TRUE;
  +                            struct jk_worker *w, void *context) {
  +    return JK_TRUE;
   }
   
   /* Post request cleanup.
  @@ -344,133 +347,131 @@
    * before the first write.
    */
   static int JK_METHOD cbHead(struct jk_env *env, jk_ws_service_t *s) {
  -	/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Into jk_ws_service_t::cbHead\n"); */
  +    if (s->status < 100 || s->status >= 1000) {
  +        env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::cbHead, invalid status %d\n", s->status);
  +        return JK_ERR;
  +    }
  +
  +    if (s && s->ws_private) {
  +        private_ws_t *p = s->ws_private;
  +
  +        if (!p->responseStarted) {
  +            char *hdrBuf;
  +            FilterResponseHeaders frh;
  +            int rc, errID;
  +            int hdrCount;
  +            const char *reason;
  +
  +            p->responseStarted = JK_TRUE;
  +
  +            reason = (NULL == s->msg) ? "" : s->msg;
  +            hdrCount = s->headers_out->size(env, s->headers_out);
  +
  +            /* Build a single string containing all the headers
  +             * because that's what Domino needs.
  +             */
  +            if (hdrCount > 0) {
  +                int i;
  +                int hdrLen;
  +                char *bufp;
  +
  +                for (i = 0, hdrLen = 3; i < hdrCount; i++) {
  +                    hdrLen += strlen(s->headers_out->nameAt(env, s->headers_out, i));
  +                    hdrLen += strlen(s->headers_out->valueAt(env, s->headers_out, i));
  +                    hdrLen += 4;
  +                }
  +
  +                hdrBuf = s->pool->alloc(env, s->pool, hdrLen);
  +                bufp = hdrBuf;
  +
  +                for (i = 0; i < hdrCount; i++) {
  +                    append(&bufp, s->headers_out->nameAt(env, s->headers_out, i));
  +                    append(&bufp, ": ");
  +                    append(&bufp, s->headers_out->valueAt(env, s->headers_out, i));
  +                    append(&bufp, crlf);
  +                }
   
  -	if (s->status < 100 || s->status >= 1000) {
  -		env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::cbHead, invalid status %d\n", s->status);
  -		return JK_ERR;
  -	}
  -
  -	if (s && s->ws_private) {
  -		private_ws_t *p = s->ws_private;
  -
  -		if (!p->responseStarted) {
  -			char *hdrBuf;
  -			FilterResponseHeaders frh;
  -			int rc, errID;
  -			int hdrCount;
  -			const char *reason;
  -
  -			p->responseStarted = JK_TRUE;
  -
  -			reason = (NULL == s->msg) ? "" : s->msg;
  -			hdrCount = s->headers_out->size(env, s->headers_out);
  -
  -			/* Build a single string containing all the headers
  -			 * because that's what Domino needs.
  -			 */
  -			if (hdrCount > 0) {
  -				int i;
  -				int hdrLen;
  -				char *bufp;
  -
  -				for (i = 0, hdrLen = 3; i < hdrCount; i++) {
  -					hdrLen += strlen(s->headers_out->nameAt(env, s->headers_out, i));
  -					hdrLen += strlen(s->headers_out->valueAt(env, s->headers_out, i));
  -					hdrLen += 4;
  -				}
  -
  -				hdrBuf = s->pool->alloc(env, s->pool, hdrLen);
  -				bufp = hdrBuf;
  -
  -				for (i = 0; i < hdrCount; i++) {
  -					append(&bufp, s->headers_out->nameAt(env, s->headers_out, i));
  -					append(&bufp, ": ");
  -					append(&bufp, s->headers_out->valueAt(env, s->headers_out, i));
  -					append(&bufp, crlf);
  -				}
  -
  -				append(&bufp, crlf);
  -			} else {
  -				hdrBuf = (char *) crlf;
  -			}
  -
  -			frh.responseCode	= s->status;
  -			frh.reasonText		= (char *) reason;
  -			frh.headerText		= hdrBuf;
  -
  -			/* Send the headers */
  -			rc = p->context->ServerSupport(p->context, kWriteResponseHeaders, &frh, NULL, 0, &errID);
  -		}
  -		return JK_OK;
  -	}
  +                append(&bufp, crlf);
  +            } else {
  +                hdrBuf = (char *) crlf;
  +            }
  +
  +            frh.responseCode    = s->status;
  +            frh.reasonText      = (char *) reason;
  +            frh.headerText      = hdrBuf;
  +
  +            /* Send the headers */
  +            rc = p->context->ServerSupport(p->context, kWriteResponseHeaders, &frh, NULL, 0, &errID);
  +        }
  +        return JK_OK;
  +    }
   
  -	env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::cbHead, NULL parameters\n");
  +    env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::cbHead, NULL parameters\n");
   
  -	return JK_ERR;
  +    return JK_ERR;
   }
   
   /*
    * Read a chunk of the request body into a buffer.  Attempt to read len
    * bytes into the buffer.  Write the number of bytes actually read into
  - * nRead.  
  + * nRead.
    */
   static int JK_METHOD cbRead(struct jk_env *env, jk_ws_service_t *s,
  -							  void *bytes, unsigned len, unsigned *nRead) {
  +                              void *bytes, unsigned len, unsigned *nRead) {
   
  -	if (s && s->ws_private && bytes && nRead) {
  -		private_ws_t *p = s->ws_private;
  +    if (s && s->ws_private && bytes && nRead) {
  +        private_ws_t *p = s->ws_private;
   
  -		/* Copy data from Domino's buffer. Although it seems slightly
  -		 * improbably we're believing that Domino always buffers the
  -		 * entire request in memory. Not properly tested yet.
  -		 */
  -		if (len > p->reqSize) {
  -			len = p->reqSize;
  -		}
  -		memcpy(bytes, p->reqBuffer, len);
  -		p->reqBuffer += len;
  -		p->reqSize -= len;
  -		*nRead = len;
  +        /* Copy data from Domino's buffer. Although it seems slightly
  +         * improbably we're believing that Domino always buffers the
  +         * entire request in memory. Not properly tested yet.
  +         */
  +        if (len > p->reqSize) {
  +            len = p->reqSize;
  +        }
  +        memcpy(bytes, p->reqBuffer, len);
  +        p->reqBuffer += len;
  +        p->reqSize -= len;
  +        *nRead = len;
   
  -		return JK_OK;
  -	}
  +        return JK_OK;
  +    }
   
  -	env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::Read, NULL parameters\n");
  +    env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::Read, NULL parameters\n");
   
  -	return JK_ERR;
  +    return JK_ERR;
   }
   
   /*
    * Write a chunk of response data back to the browser.
    */
   static int JK_METHOD cbWrite(struct jk_env *env, jk_ws_service_t *s,
  -							 const void *bytes, unsigned len) {
  +                             const void *bytes, unsigned len) {
   
  -	/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Into jk_ws_service_t::Write\n"); */
  +    /* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Into jk_ws_service_t::Write\n"); */
   
  -	if (s && s->ws_private && bytes) {
  -		private_ws_t *p = s->ws_private;
  -		int errID, rc;
  +    if (s && s->ws_private && bytes) {
  +        private_ws_t *p = s->ws_private;
  +        int errID, rc;
   
  -		/* Send the data */
  -		if (len > 0) {
  -			rc = p->context->WriteClient(p->context, (char *) bytes, len, 0, &errID);
  -		}
  +        /* Send the data */
  +        if (len > 0) {
  +            rc = p->context->WriteClient(p->context, (char *) bytes, len, 0, &errID);
  +        }
   
  -		return JK_OK;
  -	}
  +        return JK_OK;
  +    }
   
  -	env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::Write, NULL parameters\n");
  +    env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::Write, NULL parameters\n");
   
  -	return JK_ERR;
  +    return JK_ERR;
   }
   
   /*
    * Flush the output buffers.
    */
   static int JK_METHOD cbFlush(struct jk_env *env, jk_ws_service_t *s) {
  -	return JK_OK;
  +    return JK_OK;
   }
   
   /* Return TRUE iff the specified filename is absolute. Note that this is only
  @@ -479,89 +480,89 @@
    */
   static int isAbsolutePath(const char *fn) {
   #ifdef WIN32
  -	return fn[0] == '\\' || (isalpha(fn[0]) && fn[1] == ':');
  +    return fn[0] == '\\' || (isalpha(fn[0]) && fn[1] == ':');
   #else
  -	return fn[0] == '/';
  +    return fn[0] == '/';
   #endif
   }
   
   static const char *makeAbsolutePath(jk_env_t *env, const char *base, const char *name) {
  -	if (base == NULL || isAbsolutePath(name)) {
  -		return name;
  -	} else {
  -		int bsz = strlen(base);
  -		int nsz = strlen(name);
  -		int ads = (base[bsz-1] != PATHSEP) ? 1 : 0;
  -		char *buf;
  -
  -		if (buf = workerEnv->pool->alloc(env, workerEnv->pool, bsz + ads + nsz + 1), NULL == buf) {
  -			return NULL;
  -		}
  -		memcpy(buf, base, bsz);
  -		if (ads) {
  -			buf[bsz] = PATHSEP;
  -		}
  -		memcpy(buf + bsz + ads, name, nsz);
  -		buf[bsz + ads + nsz] = '\0';
  +    if (base == NULL || isAbsolutePath(name)) {
  +        return name;
  +    } else {
  +        int bsz = strlen(base);
  +        int nsz = strlen(name);
  +        int ads = (base[bsz-1] != PATHSEP) ? 1 : 0;
  +        char *buf;
   
  -		return buf;
  -	}
  +        if (buf = env->WORKPOOL->alloc(env, env->WORKPOOL, bsz + ads + nsz + 1), NULL == buf) {
  +            return NULL;
  +        }
  +        memcpy(buf, base, bsz);
  +        if (ads) {
  +            buf[bsz] = PATHSEP;
  +        }
  +        memcpy(buf + bsz + ads, name, nsz);
  +        buf[bsz + ads + nsz] = '\0';
  +
  +        return buf;
  +    }
   }
   
   #ifdef WIN32
   static const char *readRegistry(jk_env_t *env, HKEY hkey, const char *key, const char *base) {
  -	DWORD type = 0;
  -	DWORD sz = 0;
  -	LONG rc;
  -	char *val;
  -
  -	rc = RegQueryValueEx(hkey, key, (LPDWORD) 0, &type, NULL, &sz);
  -	if (rc != ERROR_SUCCESS || type != REG_SZ) {
  -		return NULL;
  -	}
  -
  -	if (val = workerEnv->pool->alloc(env, workerEnv->pool, sz), NULL == val) {
  -		return NULL;
  -	}
  -
  -	rc = RegQueryValueEx(hkey, key, (LPDWORD) 0, &type, val, &sz);
  -	if (rc == ERROR_SUCCESS) {
  -		return makeAbsolutePath(env, base, val);
  -	}
  +    unsigned int type = 0;
  +    unsigned int sz = 0;
  +    LONG rc;
  +    char *val;
  +
  +    rc = RegQueryValueEx(hkey, key, (LPunsigned int) 0, &type, NULL, &sz);
  +    if (rc != ERROR_SUCCESS || type != REG_SZ) {
  +        return NULL;
  +    }
   
  -	return NULL;
  +    if (val = env->WORKPOOL->alloc(env, env->WORKPOOL, sz), NULL == val) {
  +        return NULL;
  +    }
  +
  +    rc = RegQueryValueEx(hkey, key, (LPunsigned int) 0, &type, val, &sz);
  +    if (rc == ERROR_SUCCESS) {
  +        return makeAbsolutePath(env, base, val);
  +    }
  +
  +    return NULL;
   }
   #endif
   
   static int readFromRegistry(jk_env_t *env) {
   #ifdef WIN32
  -	HKEY hkey;
  -	long rc;
  -	const char *timeout;
  -
  -	rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGISTRY_LOCATION, (DWORD) 0, KEY_READ, &hkey);
  -	if (ERROR_SUCCESS != rc) {
  -		return JK_FALSE;
  -	}
  -
  -	serverRoot	= readRegistry(env, hkey, SERVER_ROOT_TAG,		NULL);
  -	workersFile	= readRegistry(env, hkey, WORKER_FILE_TAG,		serverRoot);
  -	tomcatStart	= readRegistry(env, hkey, TOMCAT_START_TAG,		serverRoot);
  -	tomcatStop	= readRegistry(env, hkey, TOMCAT_STOP_TAG,		serverRoot);
  -	timeout		= readRegistry(env, hkey, TOMCAT_TIMEOUT_TAG,	NULL);
  -	if (timeout != NULL) {
  -		tomcatTimeout = atoi(timeout);
  -	}
  +    HKEY hkey;
  +    long rc;
  +    const char *timeout;
  +
  +    rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGISTRY_LOCATION, (unsigned int) 0, KEY_READ, &hkey);
  +    if (ERROR_SUCCESS != rc) {
  +        return JK_FALSE;
  +    }
   
  -	RegCloseKey(hkey);
  +    serverRoot  = readRegistry(env, hkey, SERVER_ROOT_TAG,      NULL);
  +    workersFile = readRegistry(env, hkey, WORKER_FILE_TAG,      serverRoot);
  +    tomcatStart = readRegistry(env, hkey, TOMCAT_START_TAG,     serverRoot);
  +    tomcatStop  = readRegistry(env, hkey, TOMCAT_STOP_TAG,      serverRoot);
  +    timeout     = readRegistry(env, hkey, TOMCAT_TIMEOUT_TAG,   NULL);
  +    if (timeout != NULL) {
  +        tomcatTimeout = atoi(timeout);
  +    }
  +
  +    RegCloseKey(hkey);
   
       iniFileUsed = JK_FALSE;
   
  -    return	NULL != serverRoot &&
  -			NULL != workersFile;
  +    return  NULL != serverRoot &&
  +            NULL != workersFile;
   
   #else
  -	return JK_FALSE;
  +    return JK_FALSE;
   #endif
   }
   
  @@ -570,11 +571,12 @@
    */
   static const char *readMap(jk_env_t *env, jk_map_t *map, const char *name, const char *base)
   {
  -	const char *s = map->get(env, map, name);
  -	if (s) {
  -		return makeAbsolutePath(env, base, workerEnv->pool->pstrdup(env, workerEnv->pool, s));
  -	}
  -	return NULL;
  +    const char *s = map->get(env, map, name);
  +    if (s) {
  +        return makeAbsolutePath(env, base, env->WORKPOOL->pstrdup(env, env->WORKPOOL, s));
  +    } else {
  +        return NULL;
  +    }
   }
   
   /* Read parameters from an ini file or the registry
  @@ -582,31 +584,32 @@
   static int readConfigData(jk_env_t *env) {
       jk_map_t *map;
   
  -	/* Attempt to read from an ini file */
  -    if (JK_OK == jk2_map_default_create(env, &map, workerEnv->pool )) {
  -        if (JK_OK == jk2_config_file_read(env, map, iniFileName)) {
  -			const char *timeout;
  -
  -			serverRoot	= readMap(env, map, SERVER_ROOT_TAG,	NULL);
  -			workersFile = readMap(env, map, WORKER_FILE_TAG,	serverRoot);
  -			tomcatStart = readMap(env, map, TOMCAT_START_TAG,	serverRoot);
  -			tomcatStop	= readMap(env, map, TOMCAT_STOP_TAG,	serverRoot);
  -			timeout		= readMap(env, map, TOMCAT_TIMEOUT_TAG,	NULL);
  -
  -			if (timeout != NULL) {
  -				tomcatTimeout = atoi(timeout);
  -			}
  +    /* Attempt to read from an ini file */
  +    if (JK_OK == jk2_map_default_create(env, &map, env->WORKPOOL )) {
  +        if (JK_OK == jk2_config_file_read(env, map, INI_NAME)) {
  +            const char *timeout;
  +
  +            serverRoot  = readMap(env, map, SERVER_ROOT_TAG,    NULL);
  +            workersFile = readMap(env, map, WORKER_FILE_TAG,    serverRoot);
  +            tomcatStart = readMap(env, map, TOMCAT_START_TAG,   serverRoot);
  +            tomcatStop  = readMap(env, map, TOMCAT_STOP_TAG,    serverRoot);
  +            timeout     = readMap(env, map, TOMCAT_TIMEOUT_TAG, NULL);
  +
  +            if (timeout != NULL) {
  +                tomcatTimeout = atoi(timeout);
  +            }
   
               iniFileUsed = JK_TRUE;
  -            return	NULL != serverRoot &&
  -					NULL != workersFile;
  +            return  NULL != serverRoot &&
  +                    NULL != workersFile;
           }
       } else {
  -        env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -               "read_registry_init_data, Failed to create map \n");
  +        /* can't log here */
  +        /*env->l->jkLog(env, env->l, JK_LOG_ERROR,
  +               "read_registry_init_data, Failed to create map \n");*/
       }
   
  -	return readFromRegistry(env);
  +    return readFromRegistry(env);
   }
   
   /* Send a simple response. Used when we don't want to bother Tomcat,
  @@ -614,178 +617,179 @@
    * detect internally.
    */
   static void simpleResponse(FilterContext *context, int status, char *reason, char *body) {
  -	FilterResponseHeaders frh;
  -	int rc, errID;
  -	char hdrBuf[35];
  -
  -	sprintf(hdrBuf, "Content-type: text/html%s%s", crlf, crlf);
  -
  -	frh.responseCode	= status;
  -	frh.reasonText		= reason;
  -	frh.headerText		= hdrBuf;
  +    FilterResponseHeaders frh;
  +    int rc, errID;
  +    char hdrBuf[35];
  +
  +    sprintf(hdrBuf, "Content-type: text/html%s%s", crlf, crlf);
  +
  +    frh.responseCode    = status;
  +    frh.reasonText      = reason;
  +    frh.headerText      = hdrBuf;
   
  -	rc = context->ServerSupport(context, kWriteResponseHeaders, &frh, NULL, 0, &errID);
  -	rc = context->WriteClient(context, body, strlen(body), 0, &errID);
  +    rc = context->ServerSupport(context, kWriteResponseHeaders, &frh, NULL, 0, &errID);
  +    rc = context->WriteClient(context, body, strlen(body), 0, &errID);
   }
   
   /* Called to reject a URI that contains the string "web-inf". We block
    * these because they may indicate an attempt to invoke arbitrary code.
    */
   static unsigned int rejectBadURI(FilterContext *context) {
  -	static char *msg = "<html><body><h1>Access is Forbidden</h1></body></html>";
  +    static char *msg = "<html><body><h1>Access is Forbidden</h1></body></html>";
   
  -	simpleResponse(context, 403, "Forbidden", msg);
  +    simpleResponse(context, 403, "Forbidden", msg);
   
  -	return kFilterHandledRequest;
  +    return kFilterHandledRequest;
   }
   
   /* Called to generate a generic error response.
    */
   static unsigned int rejectWithError(FilterContext *context, const char *diagnostic) {
  -	static char *msg = "<html><body><h1>Error in Filter</h1><p>%s</p></body></html>";
  -	char *mbuf;
  -	int errID;
  -	size_t bufSz;
  +    static char *msg = "<html><body><h1>Error in Filter</h1><p>%s</p></body></html>";
  +    char *mbuf;
  +    int errID;
  +    size_t bufSz;
   
  -	if (!NONBLANK(diagnostic)) {
  -		diagnostic = "Unspecified error";
  -	}
  +    if (!NONBLANK(diagnostic)) {
  +        diagnostic = "Unspecified error";
  +    }
   
  -	// This assumes that we're just going to expand the diagnostic into
  -	// the page body.
  -	bufSz = strlen(msg) + strlen(diagnostic) + 1;
  +    // This assumes that we're just going to expand the diagnostic into
  +    // the page body.
  +    bufSz = strlen(msg) + strlen(diagnostic) + 1;
   
  -	mbuf = context->AllocMem(context, bufSz, 0, &errID);
  -	sprintf(mbuf, msg, diagnostic);
  +    mbuf = context->AllocMem(context, bufSz, 0, &errID);
  +    sprintf(mbuf, msg, diagnostic);
   
  -	simpleResponse(context, 500, "Error in Filter", mbuf);
  +    simpleResponse(context, 500, "Error in Filter", mbuf);
   
  -	return kFilterHandledRequest;
  +    return kFilterHandledRequest;
   }
   
   /* Given all the HTTP headers as a single string parse them into individual
    * name, value pairs.
    */
   static int parseHeaders(jk_env_t *env, jk_ws_service_t *s, const char *hdrs, int hdrSz) {
  -	int hdrCount = 0;
  -	const char *limit = hdrs + hdrSz;
  -	const char *name, *nameEnd;
  -	const char *value, *valueEnd;
  -	int gotContentLength = JK_FALSE;
  -	char buf[256];		/* Static buffer used for headers that are short enough to fit
  -						 * in it. A dynamic buffer is used for any longer headers.
  -						 */
  -
  -	while (hdrs < limit) {
  -		/* buf is re-used for each header */
  -		char *bufp = buf;
  -		char *hdrName, *hdrValue;
  -		int sz = sizeof(buf);
  -
  -		/* Skip line *before* doing anything, cos we want to lose the first line which
  -		 * contains the request. This code also moves to the next line after each header.
  -		 */
  -		while (hdrs < limit && (*hdrs != '\n' && *hdrs != '\r')) {
  -			hdrs++;
  -		}
  -
  -		while (hdrs < limit && (*hdrs == '\n' || *hdrs == '\r')) {
  -			hdrs++;
  -		}
  -
  -		if (hdrs >= limit) {
  -			break;
  -		}
  -
  -		name = nameEnd = value = valueEnd = NULL;
  -		name = hdrs;
  -		while (hdrs < limit && *hdrs >= ' ' && *hdrs != ':') {
  -			hdrs++;
  -		}
  -
  -		nameEnd = hdrs;
  -		if (hdrs < limit && *hdrs == ':') {
  -			hdrs++;
  -			while (hdrs < limit && (*hdrs == ' ' || *hdrs == '\t')) {
  -				hdrs++;
  -			}
  -			value = hdrs;
  -			while (hdrs < limit && *hdrs >= ' ') {
  -				hdrs++;
  -			}
  -			valueEnd = hdrs;
  -		}
  -
  -		hdrName		= smartSubStr(env, s->pool, &bufp, &sz, name, nameEnd);
  -		/* Need to strdup the value because map->put doesn't for some reason */
  -		hdrValue	= subStr(env, s->pool, value, valueEnd);
  +    int hdrCount = 0;
  +    const char *limit = hdrs + hdrSz;
  +    const char *name, *nameEnd;
  +    const char *value, *valueEnd;
  +    int gotContentLength = JK_FALSE;
  +    char buf[256];      /* Static buffer used for headers that are short enough to fit
  +                         * in it. A dynamic buffer is used for any longer headers.
  +                         */
  +
  +    while (hdrs < limit) {
  +        /* buf is re-used for each header */
  +        char *bufp = buf;
  +        char *hdrName, *hdrValue;
  +        int sz = sizeof(buf);
  +
  +        /* Skip line *before* doing anything, cos we want to lose the first line which
  +         * contains the request. This code also moves to the next line after each header.
  +         */
  +        while (hdrs < limit && (*hdrs != '\n' && *hdrs != '\r')) {
  +            hdrs++;
  +        }
  +
  +        while (hdrs < limit && (*hdrs == '\n' || *hdrs == '\r')) {
  +            hdrs++;
  +        }
  +
  +        if (hdrs >= limit) {
  +            break;
  +        }
  +
  +        name = nameEnd = value = valueEnd = NULL;
  +        name = hdrs;
  +        while (hdrs < limit && *hdrs >= ' ' && *hdrs != ':') {
  +            hdrs++;
  +        }
  +
  +        nameEnd = hdrs;
  +        if (hdrs < limit && *hdrs == ':') {
  +            hdrs++;
  +            while (hdrs < limit && (*hdrs == ' ' || *hdrs == '\t')) {
  +                hdrs++;
  +            }
  +            value = hdrs;
  +            while (hdrs < limit && *hdrs >= ' ') {
  +                hdrs++;
  +            }
  +            valueEnd = hdrs;
  +        }
  +
  +        hdrName     = smartSubStr(env, s->pool, &bufp, &sz, name, nameEnd);
  +        /* Need to strdup the value because map->put doesn't for some reason */
  +        hdrValue    = subStr(env, s->pool, value, valueEnd);
   
           s->headers_in->put(env, s->headers_in, hdrName, hdrValue, NULL);
   
  -		gotContentLength |= (noCaseStrCmp(hdrName, CONTENT_LENGTH) == 0);
  +        gotContentLength |= (noCaseStrCmp(hdrName, CONTENT_LENGTH) == 0);
   
  -		hdrCount++;
  -	}
  +        hdrCount++;
  +    }
   
  -	/* Add a zero length content-length header if none was found in the 
  -	 * request.
  -	 */
  -	if (!gotContentLength) {
  -		s->headers_in->put(env, s->headers_in, CONTENT_LENGTH, "0", NULL);
  -		hdrCount++;
  -	}
  +    /* Add a zero length content-length header if none was found in the
  +     * request.
  +     */
  +    if (!gotContentLength) {
  +        s->headers_in->put(env, s->headers_in, CONTENT_LENGTH, "0", NULL);
  +        hdrCount++;
  +    }
   
  -	return hdrCount;
  +    return hdrCount;
   }
   
   /* Initialize the service structure
    */
   static int processRequest(struct jk_env *env, jk_ws_service_t *s,
  -					struct jk_worker *w, FilterRequest *fr) {
  -	/* This is the only fixed size buffer left. It won't be overflowed
  -	 * because the Domino API that reads into the buffer accepts a length
  -	 * constraint, and it's unlikely ever to be exhausted because the
  -	 * strings being will typically be short, but it's still aesthetically
  -	 * troublesome.
  -	 */
  -	char workBuf[16 * 1024];
  -	private_ws_t *ws = (private_ws_t *) s->ws_private;
  -	char *hdrs;
  -	int hdrsz;
  -	int errID = 0;
  -	int hdrCount;
  -
  -	static char *methodName[] = { "", "HEAD", "GET", "POST", "PUT", "DELETE" };
  -
  -	/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "processRequest(), s = %p, ws = %p\n", s, ws); */
  -
  -	s->jvm_route = NULL;
  -
  -	GETVARIABLE("AUTH_TYPE", &s->auth_type, "");
  -	GETVARIABLE("REMOTE_USER", &s->remote_user, "");
  -	GETVARIABLE("SERVER_PROTOCOL", &s->protocol, "");
  -	GETVARIABLE("REMOTE_HOST", &s->remote_host, "");
  -	GETVARIABLE("REMOTE_ADDR", &s->remote_addr, "");
  -	GETVARIABLE("SERVER_NAME", &s->server_name, "");
  -	GETVARIABLEINT("SERVER_PORT", &s->server_port, 80);
  -	GETVARIABLE("SERVER_SOFTWARE", &s->server_software, SERVERDFLT);
  -	GETVARIABLEINT("CONTENT_LENGTH", &s->content_length, 0);
  -
  -	/* SSL Support
  -	 */
  -	GETVARIABLEBOOL("HTTPS", &s->is_ssl, 0);
  -
  -	if (ws->reqData->requestMethod < 0 ||
  -		ws->reqData->requestMethod >= sizeof(methodName) / sizeof(methodName[0])) {
  -		return JK_ERR;
  -	}
  -
  -	s->method			= methodName[ws->reqData->requestMethod];
  -	s->ssl_cert_len		= fr->clientCertLen;
  -	s->ssl_cert			= fr->clientCert;
  -	s->ssl_cipher		= NULL;
  -	s->ssl_session		= NULL;
  -	s->ssl_key_size		= -1;
  +                    struct jk_worker *w, FilterRequest *fr) {
  +    /* This is the only fixed size buffer left. It won't be overflowed
  +     * because the Domino API that reads into the buffer accepts a length
  +     * constraint, and it's unlikely ever to be exhausted because the
  +     * strings being will typically be short, but it's still aesthetically
  +     * troublesome.
  +     */
  +    char workBuf[16 * 1024];
  +    private_ws_t *ws = (private_ws_t *) s->ws_private;
  +    char *hdrs;
  +    int hdrsz;
  +    int errID = 0;
  +    int hdrCount;
  +    long port;
  +
  +    static char *methodName[] = { "", "HEAD", "GET", "POST", "PUT", "DELETE" };
  +
  +    s->jvm_route = NULL;
  +
  +    GETVARIABLE("AUTH_TYPE", &s->auth_type, "");
  +    GETVARIABLE("REMOTE_USER", &s->remote_user, "");
  +    GETVARIABLE("SERVER_PROTOCOL", &s->protocol, "");
  +    GETVARIABLE("REMOTE_HOST", &s->remote_host, "");
  +    GETVARIABLE("REMOTE_ADDR", &s->remote_addr, "");
  +    GETVARIABLE("SERVER_NAME", &s->server_name, "");
  +    GETVARIABLEINT("SERVER_PORT", &port, 80);
  +    GETVARIABLE("SERVER_SOFTWARE", &s->server_software, SERVERDFLT);
  +    GETVARIABLEINT("CONTENT_LENGTH", &s->content_length, 0);
  +
  +    s->server_port = (int) port;
  +
  +    /* SSL Support
  +     */
  +    GETVARIABLEBOOL("HTTPS", &s->is_ssl, 0);
  +
  +    if (ws->reqData->requestMethod < 0 ||
  +        ws->reqData->requestMethod >= sizeof(methodName) / sizeof(methodName[0])) {
  +        return JK_ERR;
  +    }
  +
  +    s->method           = methodName[ws->reqData->requestMethod];
  +    s->ssl_cert_len     = fr->clientCertLen;
  +    s->ssl_cert         = fr->clientCert;
  +    s->ssl_cipher       = NULL;
  +    s->ssl_session      = NULL;
  +    s->ssl_key_size     = -1;
   
       if (JK_OK != jk2_map_default_create(env, &s->headers_out, s->pool)) {
           env->l->jkLog(env, env->l, JK_LOG_ERROR, "jk_ws_service_t::init, Failed to create headers_out map\n");
  @@ -802,202 +806,203 @@
           return JK_ERR;
       }
   
  -	if (s->is_ssl) {
  -		int i, dummy;
  +    if (s->is_ssl) {
  +        int i;
  +        long dummy;
  +
  +        /* It seems that Domino doesn't actually expose many of these but we live in hope.
  +         */
  +        char *sslNames[] = {
  +            "CERT_ISSUER", "CERT_SUBJECT", "CERT_COOKIE", "CERT_FLAGS", "CERT_SERIALNUMBER",
  +            "HTTPS_SERVER_SUBJECT", "HTTPS_SECRETKEYSIZE", "HTTPS_SERVER_ISSUER", "HTTPS_KEYSIZE"
  +        };
  +
  +        /* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Request is SSL\n"); */
  +
  +        /* Read the variable into a dummy variable: we do this for the side effect of
  +         * reading it into workBuf.
  +         */
  +        GETVARIABLEINT("HTTPS_KEYSIZE", &dummy, 0);
  +        if (workBuf[0] == '[') {
  +            s->ssl_key_size = atoi(workBuf+1);
  +        }
   
  -		/* It seems that Domino doesn't actually expose many of these but we live in hope.
  -		 */
  -		char *sslNames[] = {
  -			"CERT_ISSUER", "CERT_SUBJECT", "CERT_COOKIE", "CERT_FLAGS", "CERT_SERIALNUMBER",
  -			"HTTPS_SERVER_SUBJECT", "HTTPS_SECRETKEYSIZE", "HTTPS_SERVER_ISSUER", "HTTPS_KEYSIZE"
  -		};
  -
  -		/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Request is SSL\n"); */
  -
  -		/* Read the variable into a dummy variable: we do this for the side effect of
  -		 * reading it into workBuf.
  -		 */
  -		GETVARIABLEINT("HTTPS_KEYSIZE", &dummy, 0);
  -		if (workBuf[0] == '[') {
  -			s->ssl_key_size = atoi(workBuf+1);
  -		}
  -
  -		/* Should also try to make suitable values for s->ssl_cipher and
  -		 * s->ssl_session
  -		 */
  -		for (i = 0; i < sizeof(sslNames) / sizeof(sslNames[0]); i++) {
  -			char *value = NULL;
  -			GETVARIABLE(sslNames[i], &value, NULL);
  -			if (value) {
  -				s->attributes->put(env, s->attributes, sslNames[i], value, NULL);
  -			}
  -		}
  -	}
  -
  -	/* Duplicate all the headers now
  -	 */
  -	hdrsz = ws->reqData->GetAllHeaders(ws->context, &hdrs, &errID);
  -	if (0 == hdrsz) {
  -		return JK_ERR;
  -	}
  +        /* Should also try to make suitable values for s->ssl_cipher and
  +         * s->ssl_session
  +         */
  +        for (i = 0; i < sizeof(sslNames) / sizeof(sslNames[0]); i++) {
  +            char *value = NULL;
  +            GETVARIABLE(sslNames[i], &value, NULL);
  +            if (value) {
  +                s->attributes->put(env, s->attributes, sslNames[i], value, NULL);
  +            }
  +        }
  +    }
  +
  +    /* Duplicate all the headers now
  +     */
  +    hdrsz = ws->reqData->GetAllHeaders(ws->context, &hdrs, &errID);
  +    if (0 == hdrsz) {
  +        return JK_ERR;
  +    }
   
  -	hdrCount = parseHeaders(env, s, hdrs, hdrsz);
  +    hdrCount = parseHeaders(env, s, hdrs, hdrsz);
   
  -	return JK_OK;
  +    return JK_OK;
   }
   
   /* Handle an HTTP request. Works out whether Tomcat will be interested then either
    * despatches it to Tomcat or passes it back to Domino.
    */
   static unsigned int parsedRequest(FilterContext *context, FilterParsedRequest *reqData) {
  -	unsigned int errID;
  -	int rc;
  -	FilterRequest fr;
  -	int result = kFilterNotHandled;
  -
  -	/* TODO: presumably this return code should be checked */
  -	rc = context->GetRequest(context, &fr, &errID);
  -
  -	if (NONBLANK(fr.URL)) {
  -		char *uri = fr.URL;
  -		char *qp, *turi;
  -	    jk_uriEnv_t *uriEnv = NULL;
  -		int errID;
  -		char buf[256];	/* enough for the server's name */
  -		char *serverName;
  -		size_t serverNameSz;
  -		int serverPort;
  -		char *uriBuf;
  -		size_t uriSz, uriBufSz;
  -	    jk_env_t *env = workerEnv->globalEnv->getEnv(workerEnv->globalEnv);
  -
  -		/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "parsedRequest() - %s\n", uri); */
  -
  -		if (!context->GetServerVariable(context, "SERVER_PORT", buf, sizeof(buf), &errID)) {
  -			return rejectWithError(context, "Failed to retrieve SERVER_PORT");
  -		}
  -
  -		serverPort = atoi(buf);
  -
  -		if (!context->GetServerVariable(context, "SERVER_NAME", buf, sizeof(buf), &errID)) {
  -			return rejectWithError(context, "Failed to retrieve SERVER_NAME");
  -		}
  -
  -		serverName = buf;	/* note serverName just aliases buf
  -							 * and will be destroyed if buf is reused
  -							 */
  -
  -		serverNameSz = strlen(serverName) + 1;
  -
  -		uriBuf   = serverName + serverNameSz;
  -		uriBufSz = sizeof(buf) - serverNameSz;
  -		uriSz    = strlen(uri) + 1;
  -
  -		/* Use the stack buffer for sufficiently short URIs */
  -		if (uriSz <= uriBufSz) {
  -			turi = uriBuf;
  -		} else {
  -			turi = context->AllocMem(context, uriSz, 0, &errID);
  -		}
  -		memcpy(turi, uri, uriSz);
  +    unsigned int errID;
  +    int rc;
  +    FilterRequest fr;
  +    int result = kFilterNotHandled;
  +
  +    /* TODO: presumably this return code should be checked */
  +    rc = context->GetRequest(context, &fr, &errID);
  +
  +    if (NONBLANK(fr.URL)) {
  +        char *uri = fr.URL;
  +        char *qp, *turi;
  +        jk_uriEnv_t *uriEnv = NULL;
  +        int errID;
  +        char buf[256];  /* enough for the server's name */
  +        char *serverName;
  +        size_t serverNameSz;
  +        int serverPort;
  +        char *uriBuf;
  +        size_t uriSz, uriBufSz;
  +        jk_env_t *env = workerEnv->globalEnv->getEnv(workerEnv->globalEnv);
  +
  +        /* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "parsedRequest() - %s\n", uri); */
  +
  +        if (!context->GetServerVariable(context, "SERVER_PORT", buf, sizeof(buf), &errID)) {
  +            return rejectWithError(context, "Failed to retrieve SERVER_PORT");
  +        }
  +
  +        serverPort = atoi(buf);
  +
  +        if (!context->GetServerVariable(context, "SERVER_NAME", buf, sizeof(buf), &errID)) {
  +            return rejectWithError(context, "Failed to retrieve SERVER_NAME");
  +        }
  +
  +        serverName = buf;   /* note serverName just aliases buf
  +                             * and will be destroyed if buf is reused
  +                             */
  +
  +        serverNameSz = strlen(serverName) + 1;
  +
  +        uriBuf   = serverName + serverNameSz;
  +        uriBufSz = sizeof(buf) - serverNameSz;
  +        uriSz    = strlen(uri) + 1;
  +
  +        /* Use the stack buffer for sufficiently short URIs */
  +        if (uriSz <= uriBufSz) {
  +            turi = uriBuf;
  +        } else {
  +            turi = context->AllocMem(context, uriSz, 0, &errID);
  +        }
  +        memcpy(turi, uri, uriSz);
   
           if (qp = strchr(turi, '?'), qp != NULL) {
  -			*qp++ = '\0';
  -		}
  -	
  +            *qp++ = '\0';
  +        }
  +
           rc = jk_requtil_unescapeUrl(turi);
  -		if (rc < 0) {
  -			return rejectBadURI(context);
  -		}
  +        if (rc < 0) {
  +            return rejectBadURI(context);
  +        }
   
           jk_requtil_getParents(turi);
   
  -		if (badURI(turi)) {
  -			return rejectBadURI(context);
  -		}
  +        if (badURI(turi)) {
  +            return rejectBadURI(context);
  +        }
   
           uriEnv = workerEnv->uriMap->mapUri(env, workerEnv->uriMap, serverName, serverPort, turi);
  -        
  -		if (NULL != uriEnv) {
  -			// Here we go
  -			private_ws_t ws;
  -			jk_ws_service_t s;
  -		    jk_pool_t *rPool = NULL;
  -		    jk_worker_t *worker = uriEnv->worker;
  -
  -			rPool = worker->rPoolCache->get(env, worker->rPoolCache);
  -			if (NULL == rPool) {
  -				rPool = worker->mbean->pool->create(env, worker->mbean->pool, HUGE_POOL_SIZE);
  -				/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpExtensionProc: new rpool\n"); */
  -			}
  -
  -			jk2_requtil_initRequest(env, &s);
  -
  -		    /* reset the reco_status, will be set to INITED in LB mode */
  -    		s.reco_status 			= RECO_NONE;
  -    
  -			s.pool					= rPool;
  -			s.is_recoverable_error	= JK_FALSE;
  -			s.response_started		= JK_FALSE;
  -			s.content_read			= 0;
  -			s.ws_private			= &ws;
  -			s.workerEnv				= workerEnv;
  -			s.head					= cbHead;
  -			s.read					= cbRead;
  -			s.write					= cbWrite;
  -			s.init					= cbInit;			/* never seems to be used */
  -			s.afterRequest			= cbAfterRequest;
  +
  +        if (NULL != uriEnv) {
  +            // Here we go
  +            private_ws_t ws;
  +            jk_ws_service_t s;
  +            jk_pool_t *rPool = NULL;
  +            jk_worker_t *worker = uriEnv->worker;
  +
  +            rPool = worker->rPoolCache->get(env, worker->rPoolCache);
  +            if (NULL == rPool) {
  +                rPool = worker->mbean->pool->create(env, worker->mbean->pool, HUGE_POOL_SIZE);
  +                /* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpExtensionProc: new rpool\n"); */
  +            }
  +
  +            jk2_requtil_initRequest(env, &s);
  +
  +            /* reset the reco_status, will be set to INITED in LB mode */
  +            s.reco_status           = RECO_NONE;
  +
  +            s.pool                  = rPool;
  +            s.is_recoverable_error  = JK_FALSE;
  +            s.response_started      = JK_FALSE;
  +            s.content_read          = 0;
  +            s.ws_private            = &ws;
  +            s.workerEnv             = workerEnv;
  +            s.head                  = cbHead;
  +            s.read                  = cbRead;
  +            s.write                 = cbWrite;
  +            s.init                  = cbInit;           /* never seems to be used */
  +            s.afterRequest          = cbAfterRequest;
   
               if (workerEnv->options == JK_OPT_FWDURICOMPATUNPARSED) {
  -				s.req_uri = env->globalPool->pstrdup(env, rPool, libFileName);
  -				/* Find the query string again in the original URI */
  -				if (qp = strchr(s.req_uri, '?'), NULL != qp) {
  -					*qp++ = '\0';
  -				}
  +                s.req_uri = env->globalPool->pstrdup(env, rPool, uri);
  +                /* Find the query string again in the original URI */
  +                if (qp = strchr(s.req_uri, '?'), NULL != qp) {
  +                    *qp++ = '\0';
  +                }
               } else if (workerEnv->options == JK_OPT_FWDURIESCAPED) {
  -				/* Nasty static buffer */
  -				char euri[256];
  -				if (jk_requtil_escapeUrl(turi, buf, sizeof(euri))) {
  -					turi = euri;
  -				}
  -				s.req_uri = turi;
  +                /* Nasty static buffer */
  +                char euri[256];
  +                if (jk_requtil_escapeUrl(turi, buf, sizeof(euri))) {
  +                    turi = euri;
  +                }
  +                s.req_uri = turi;
               } else {
  -				s.req_uri = turi;
  +                s.req_uri = turi;
               }
   
  -			s.query_string		= qp;
  +            s.query_string      = qp;
   
  -			/* Init our private structure
  -			 */
  -			ws.responseStarted	= JK_FALSE;
  -			ws.context			= context;
  -			ws.reqData			= reqData;
  -
  -			/* Fetch info about the request
  -			 */
  -			ws.reqSize			= context->GetRequestContents(context, &ws.reqBuffer, &errID);
  -
  -			rc = processRequest(env, &s, worker, &fr);
  -			if (JK_OK == rc) {
  -				rc = worker->service(env, uriEnv->worker, &s);
  -			}
  -
  -			if (JK_OK == rc) {
  -				result = kFilterHandledRequest;
  -				/* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpExtensionProc service() returned OK\n"); */
  -			} else {
  -				result = kFilterError;
  -				env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpExtensionProc error, service() failed\n");
  -			}
  -
  -			rPool->reset(env, rPool);
  -			rc = worker->rPoolCache->put(env, worker->rPoolCache, rPool);
  -		}
  +            /* Init our private structure
  +             */
  +            ws.responseStarted  = JK_FALSE;
  +            ws.context          = context;
  +            ws.reqData          = reqData;
  +
  +            /* Fetch info about the request
  +             */
  +            ws.reqSize          = context->GetRequestContents(context, &ws.reqBuffer, &errID);
  +
  +            rc = processRequest(env, &s, worker, &fr);
  +            if (JK_OK == rc) {
  +                rc = worker->service(env, uriEnv->worker, &s);
  +            }
   
  -		workerEnv->globalEnv->releaseEnv(workerEnv->globalEnv, env);
  -	}
  +            if (JK_OK == rc) {
  +                result = kFilterHandledRequest;
  +                /* env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpExtensionProc service() returned OK\n"); */
  +            } else {
  +                result = kFilterError;
  +                env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpExtensionProc error, service() failed\n");
  +            }
  +
  +            rPool->reset(env, rPool);
  +            rc = worker->rPoolCache->put(env, worker->rPoolCache, rPool);
  +        }
   
  -	return result;
  +        workerEnv->globalEnv->releaseEnv(workerEnv->globalEnv, env);
  +    }
  +
  +    return result;
   }
   
   static int runProg(const char *cmd) {
  @@ -1005,74 +1010,74 @@
       STARTUPINFO si;
       PROCESS_INFORMATION pi;
   
  -	memset(&si, 0, sizeof(si));
  -    si.cb			= sizeof(si);    // Start the child process.
  -	si.dwFlags		= STARTF_USESHOWWINDOW;
  -	si.wShowWindow	= SW_SHOWMAXIMIZED;
  -
  -	if (!CreateProcess(NULL, (char *) cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))	{
  -		DWORD err = GetLastError();
  -		AddInLogMessageText("Command \"%s\" failed (error %u)", NOERROR, cmd, err);
  -		return JK_FALSE;
  -	}
  -
  -	if (WAIT_OBJECT_0 == WaitForSingleObject(pi.hProcess, tomcatTimeout)) {
  -		return JK_TRUE;
  -	}
  +    memset(&si, 0, sizeof(si));
  +    si.cb           = sizeof(si);    // Start the child process.
  +    si.dwFlags      = STARTF_USESHOWWINDOW;
  +    si.wShowWindow  = SW_SHOWMAXIMIZED;
  +
  +    if (!CreateProcess(NULL, (char *) cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
  +        DWORD err = GetLastError();
  +        AddInLogMessageText("Command \"%s\" failed (error %u)", NOERROR, cmd, err);
  +        return JK_FALSE;
  +    }
  +
  +    if (WAIT_OBJECT_0 == WaitForSingleObject(pi.hProcess, tomcatTimeout)) {
  +        return JK_TRUE;
  +    }
   
  -	AddInLogMessageText("Command \"%s\" didn't complete in time", NOERROR, cmd);
  -	return JK_FALSE;
  +    AddInLogMessageText("Command \"%s\" didn't complete in time", NOERROR, cmd);
  +    return JK_FALSE;
   #else
  -	int err = system(cmd);
  -	if (0 == err) {
  -		return 1;
  -	}
  -	AddInLogMessageText("Command \"%s\" failed (error %d)", NOERROR, cmd, err);
  -	return 0;
  +    int err = system(cmd);
  +    if (0 == err) {
  +        return 1;
  +    }
  +    AddInLogMessageText("Command \"%s\" failed (error %d)", NOERROR, cmd, err);
  +    return 0;
   #endif
   }
   
   /* Main entry point for the filter. Called by Domino for every HTTP request.
    */
   DLLEXPORT unsigned int HttpFilterProc(FilterContext *context, unsigned int eventType, void *eventData) {
  -	switch (eventType) {
  -	case kFilterParsedRequest:
  -		return parsedRequest(context, (FilterParsedRequest *) eventData);
  -	default:
  -		break;
  -	}
  +    switch (eventType) {
  +    case kFilterParsedRequest:
  +        return parsedRequest(context, (FilterParsedRequest *) eventData);
  +    default:
  +        break;
  +    }
   
  -	return kFilterNotHandled;
  +    return kFilterNotHandled;
   }
   
   /* Called when the filter is unloaded. Free various resources and
    * display a banner.
    */
   DLLEXPORT unsigned int TerminateFilter(unsigned int reserved) {
  -    jk_env_t *env = workerEnv->globalEnv->getEnv(workerEnv->globalEnv);
  +    /*jk_env_t *env = workerEnv->globalEnv->getEnv(workerEnv->globalEnv);*/
   
  -	// TODO: Work out if we're doing everything we need to here
  -	if (isInited) {
  +    // TODO: Work out if we're doing everything we need to here
  +    if (isInited) {
           if (workerEnv) {
               jk_env_t *env = workerEnv->globalEnv;
               workerEnv->close(env, workerEnv);
           }
   
  -		isInited = JK_FALSE;
  -	}
  +        isInited = JK_FALSE;
  +    }
   
   #ifndef TESTING
  -	if (NONBLANK(tomcatStop)) {
  -		AddInLogMessageText("Attempting to stop Tomcat: %s", NOERROR, tomcatStop);
  -		runProg(tomcatStop);
  -	}
  +    if (NONBLANK(tomcatStop)) {
  +        AddInLogMessageText("Attempting to stop Tomcat: %s", NOERROR, tomcatStop);
  +        runProg(tomcatStop);
  +    }
   #endif
   
  -	AddInLogMessageText(FILTERDESC " unloaded", NOERROR);
  +    AddInLogMessageText(FILTERDESC " unloaded", NOERROR);
   
       apr_pool_destroy(jk_globalPool);
   
  -	return kFilterHandledEvent;
  +    return kFilterHandledEvent;
   }
   
   /* Called when Domino loads the filter. Reads a load of config data from
  @@ -1084,30 +1089,6 @@
       jk_bean_t *jkb;
       jk_env_t *env;
   
  -#ifndef WIN32
  -	Dl_info info;
  -	char *dot, *slash;
  -
  -	memset(&info, 0, sizeof(info));
  -	if (!dladdr(FilterInit, &info) || NULL == info.dli_fname) {
  -		goto initFailed;
  -	}
  -
  -	lstrcpyn(libFileName, info.dli_fname, sizeof(libFileName)-1);
  -	lstrcpyn(iniFileName, info.dli_fname, sizeof(libFileName)-1);
  -	slash = strrchr(iniFileName, PATHSEP);
  -	if (NULL == slash) {
  -		slash = iniFileName;
  -	} else {
  -		slash++;
  -	}
  -	dot = strrchr(slash, '.');
  -	if (NULL == dot) {
  -		dot = slash + strlen(slash);
  -	}
  -	lstrcpyn(slash, PROPERTIES_EXT, (iniFileName + sizeof(iniFileName) - 1) - slash);
  -#endif
  -
       apr_initialize();
       apr_pool_create(&jk_globalPool, NULL);
   
  @@ -1118,6 +1099,23 @@
        */
       env = jk2_env_getEnv(NULL, globalPool);
   
  +    if (!readConfigData(env)) {
  +        goto initFailed;
  +    }
  +
  +    /* Create the workerEnv.
  +     */
  +    jkb = env->createBean2(env, env->globalPool,"workerEnv", "");
  +    workerEnv = jkb->object;
  +    env->alias(env, "workerEnv:", "workerEnv");
  +    workerEnv->childId = 0;
  +
  +    if (NULL == workerEnv) {
  +        goto initFailed;
  +    }
  +
  +    /* Create the logger
  +     */
   #ifdef TESTING
       env->registerFactory(env, "logger.printf", jk2_logger_printf_factory);
   #endif
  @@ -1125,74 +1123,56 @@
       jkb = env->createBean2(env, env->globalPool, LOGGER, "");
       env->alias(env, LOGGER ":", "logger");
       l = jkb->object;
  -
       env->l = l;
  -    env->soName = env->globalPool->pstrdup(env, env->globalPool, libFileName);
   
  +#ifdef WIN32
  +    env->soName = env->globalPool->pstrdup(env, env->globalPool, libFileName);
       if (NULL == env->soName) {
           env->l->jkLog(env, env->l, JK_LOG_ERROR, "Error creating env->soName\n");
  -		goto initFailed;
  -    }
  -
  -	/* Initialise logger
  -	 */
  -    env->l->init(env, env->l);
  -
  -    /* Create the workerEnv
  -	 */
  -    jkb = env->createBean2(env, env->globalPool,"workerEnv", "");
  -    workerEnv = jkb->object;
  -    env->alias(env, "workerEnv:", "workerEnv");
  -
  -    if (NULL == workerEnv) {
  -        env->l->jkLog(env, env->l, JK_LOG_ERROR, "Error creating workerEnv\n");
           goto initFailed;
       }
  -
  -    workerEnv->childId = 0;
  -
  -	if (!readConfigData(env)) {
  -		goto initFailed;
  -	}
  +#else
  +    env->soName = NULL;
  +#endif
   
       workerEnv->initData->add(env, workerEnv->initData, "serverRoot",
                                workerEnv->pool->pstrdup(env, workerEnv->pool, serverRoot));
   
  -    env->l->jkLog(env, env->l, JK_LOG_INFO, "Set serverRoot %s\n", serverRoot);
  +    /* Note: we cast away the const qualifier on workersFile here
  +     */
  +    if (JK_OK != workerEnv->config->setPropertyString(env, workerEnv->config,
  +                                                        "config.file", (char *) workersFile)) {
  +        goto initFailed;
  +    }
   
  -	/* Note: we cast away the const qualifier on workersFile here
  -	 */
  -	if (JK_OK != workerEnv->config->setPropertyString(env, workerEnv->config,
  -														"config.file", (char *) workersFile)) {
  -		goto initFailed;
  -	}
  +    env->l->init(env, env->l);
   
       workerEnv->init(env, workerEnv);
   
   #ifndef TESTING
  -	/* Attempt to launch Tomcat
  -	 */
  -	if (NONBLANK(tomcatStart)) {
  -		AddInLogMessageText("Attempting to start Tomcat: %s", NOERROR, tomcatStart);
  -		runProg(tomcatStart);
  -	}
  +    /* Attempt to launch Tomcat
  +     */
  +    if (NONBLANK(tomcatStart)) {
  +        AddInLogMessageText("Attempting to start Tomcat: %s", NOERROR, tomcatStart);
  +        runProg(tomcatStart);
  +    }
   #endif
   
  -	filterInitData->appFilterVersion	= kInterfaceVersion;
  -	filterInitData->eventFlags			= kFilterParsedRequest;
  +    filterInitData->appFilterVersion    = kInterfaceVersion;
  +    filterInitData->eventFlags          = kFilterParsedRequest;
   
  -	lstrcpyn(filterInitData->filterDesc, FILTERDESC, sizeof(filterInitData->filterDesc));
  -	isInited = JK_TRUE;
  +    strncpy(filterInitData->filterDesc, FILTERDESC, sizeof(filterInitData->filterDesc));
  +    isInited = JK_TRUE;
   
  -	/* Display banner
  -	 */
  -	AddInLogMessageText("%s loaded", NOERROR, filterInitData->filterDesc);
  +    /* Display banner
  +     */
  +    AddInLogMessageText("%s loaded", NOERROR, filterInitData->filterDesc);
   
  -	return kFilterHandledEvent;
  +    return kFilterHandledEvent;
   
   initFailed:
  -	AddInLogMessageText("Error loading %s", NOERROR, FILTERDESC);
  -	return kFilterError;
  +    AddInLogMessageText("Error loading %s", NOERROR, FILTERDESC);
  +    return kFilterError;
   }
   
   #ifdef WIN32
  @@ -1200,24 +1180,24 @@
    * should be called.
    */
   BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ulReason, LPVOID lpReserved) {
  -	BOOL fReturn = TRUE;
  -	char drive[_MAX_DRIVE];
  -	char dir[_MAX_DIR];
  -	char fname[_MAX_FNAME];
  -
  -	switch (ulReason) {
  -	case DLL_PROCESS_ATTACH:
  -		if (GetModuleFileName(hInst, libFileName, sizeof(libFileName))) {
  -			_splitpath(libFileName, drive, dir, fname, NULL);
  -			_makepath(iniFileName, drive, dir, fname, PROPERTIES_EXT);
  -		} else {
  -			fReturn = FALSE;
  -		}
  -		break;
  -	default:
  -		break;
  -	}
  -	return fReturn;
  +    BOOL fReturn = TRUE;
  +    char drive[_MAX_DRIVE];
  +    char dir[_MAX_DIR];
  +    char fname[_MAX_FNAME];
  +
  +    switch (ulReason) {
  +    case DLL_PROCESS_ATTACH:
  +        if (GetModuleFileName(hInst, libFileName, sizeof(libFileName))) {
  +            _splitpath(libFileName, drive, dir, fname, NULL);
  +            _makepath(iniFileName, drive, dir, fname, PROPERTIES_EXT);
  +        } else {
  +            fReturn = FALSE;
  +        }
  +        break;
  +    default:
  +        break;
  +    }
  +    return fReturn;
   }
   #endif
   
  @@ -1225,7 +1205,7 @@
   /* Handle initialisation in the test harness environment.
    */
   void TestMain(void) {
  -	strcpy(libFileName, "test.exe");
  -	strcpy(iniFileName, "test" PROPERTIES_EXT);
  +    strcpy(libFileName, "test.exe");
  +    strcpy(iniFileName, "test" PROPERTIES_EXT);
   }
   #endif
  
  
  
  1.6       +23 -28    jakarta-tomcat-connectors/jk/native2/server/dsapi/config.h
  
  Index: config.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/dsapi/config.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- config.h	27 Feb 2004 15:14:09 -0000	1.5
  +++ config.h	26 Mar 2004 13:52:39 -0000	1.6
  @@ -1,12 +1,12 @@
   /*
    * Copyright 1999-2001,2004 The Apache Software Foundation.
  - * 
  + *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
  - * 
  + *
    *      http://www.apache.org/licenses/LICENSE-2.0
  - * 
  + *
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  @@ -24,7 +24,7 @@
   #define __config_h
   
   #define NONBLANK(s) \
  -	(NULL != (s) && '\0' != *(s))
  +    (NULL != (s) && '\0' != *(s))
   
   /* the _memicmp() function is available */
   #if defined(WIN32)
  @@ -32,18 +32,13 @@
   #define HAVE_MEMICMP
   #define PATHSEP '\\'
   
  -#elif defined(LINUX)
  -
  -#undef HAVE_MEMICMP
  -#define PATHSEP '/'
  -
  -#elif defined(SOLARIS)
  +#else
   
   #undef HAVE_MEMICMP
   #define PATHSEP '/'
  +#define MAX_PATH 512
  +#define NO_CAPI
   
  -#else
  -#error Please define one of WIN32, LINUX or SOLARIS
   #endif
   
   /* define if you don't have the Notes C API which is available from
  @@ -54,10 +49,10 @@
   
   #ifdef _DEBUG
   #define DEBUG(args) \
  -	do { _printf args ; } while (0)
  +    do { _printf args ; } while (0)
   #else
   #define DEBUG(args) \
  -	do { } while (0)
  +    do { } while (0)
   #endif
   
   #if !defined(DLLEXPORT)
  @@ -69,18 +64,18 @@
   #endif
   
   /* Configuration tags */
  -#define SERVER_ROOT_TAG		"serverRoot"
  -#define WORKER_FILE_TAG		"workersFile"
  -#define TOMCAT_START_TAG	"tomcatStart"
  -#define TOMCAT_STOP_TAG		"tomcatStop"
  -#define TOMCAT_TIMEOUT_TAG	"tomcatTimeout"
  -#define VERSION				"2.0.2"
  -#define VERSION_STRING		"Jakarta/DSAPI/" VERSION
  -#define FILTERDESC			"Apache Tomcat Interceptor (" VERSION_STRING ")"
  -#define SERVERDFLT			"Lotus Domino"
  -#define REGISTRY_LOCATION	"Software\\Apache Software Foundation\\Jakarta Dsapi Redirector\\2.0"
  -#define TOMCAT_STARTSTOP_TO	30000				/* 30 seconds */
  -#define CONTENT_LENGTH		"Content-length"	/* Name of CL header */
  -#define PROPERTIES_EXT		".properties"
  +#define SERVER_ROOT_TAG     "serverRoot"
  +#define WORKER_FILE_TAG     "workersFile"
  +#define TOMCAT_START_TAG    "tomcatStart"
  +#define TOMCAT_STOP_TAG     "tomcatStop"
  +#define TOMCAT_TIMEOUT_TAG  "tomcatTimeout"
  +#define VERSION             "2.0.2"
  +#define VERSION_STRING      "Jakarta/DSAPI/" VERSION
  +#define FILTERDESC          "Apache Tomcat Interceptor (" VERSION_STRING ")"
  +#define SERVERDFLT          "Lotus Domino"
  +#define REGISTRY_LOCATION   "Software\\Apache Software Foundation\\Jakarta Dsapi Redirector\\2.0"
  +#define TOMCAT_STARTSTOP_TO 30000               /* 30 seconds */
  +#define CONTENT_LENGTH      "Content-length"    /* Name of CL header */
  +#define PROPERTIES_EXT      ".properties"
   
   #endif /* __config_h */
  
  
  

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