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 2001/06/27 21:13:33 UTC
cvs commit: jakarta-tomcat-connectors/jk/native/domino jk_dsapi_plugin.c
andya 01/06/27 12:13:32
Modified: jk/native/domino jk_dsapi_plugin.c
Log:
Fixed bizarre line end corruption. Must be something to do with using WinCVS in line end translation mode.
Revision Changes Path
1.9 +199 -179 jakarta-tomcat-connectors/jk/native/domino/jk_dsapi_plugin.c
Index: jk_dsapi_plugin.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/domino/jk_dsapi_plugin.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- jk_dsapi_plugin.c 2001/06/22 16:59:58 1.8
+++ jk_dsapi_plugin.c 2001/06/27 19:13:29 1.9
@@ -58,7 +58,7 @@
/***************************************************************************
* Description: DSAPI plugin for Lotus Domino *
* Author: Andy Armstrong <an...@tagish.com> *
- * Version: $Revision: 1.8 $ *
+ * Version: $Revision: 1.9 $ *
***************************************************************************/
/* Based on the IIS redirector by Gal Shachor <sh...@il.ibm.com> */
@@ -100,7 +100,8 @@
#define VERSION "1.0.3"
#define VERSION_STRING "Jakarta/DSAPI/" VERSION
/* What we call ourselves */
-#define FILTERDESC "Apache Tomcat Interceptor (" VERSION_STRING ")"
+#define FILTERDESC "Apache Tomcat Interceptor (" VERSION_STRING ")"
+
#define SERVERDFLT "Lotus Domino"
/* Registry location of configuration data */
#define REGISTRY_LOCATION "Software\\Apache Software Foundation\\Jakarta Dsapi Redirector\\1.0"
@@ -120,16 +121,19 @@
static jk_logger_t *logger = NULL;
static int logLevel = JK_LOG_EMERG_LEVEL;
-static jk_pool_t cfgPool;
-
+static jk_pool_t cfgPool;
+
+
+
static const char *logFile;
static const char *workerFile;
static const char *workerMountFile;
static const char *tomcatStart;
static const char *tomcatStop;
-
-#if defined(JK_VERSION) && JK_VERSION >= MAKEVERSION(1, 2, 0, 1)
-static jk_worker_env_t worker_env;
+
+
+#if defined(JK_VERSION) && JK_VERSION >= MAKEVERSION(1, 2, 0, 1)
+static jk_worker_env_t worker_env;
#endif
static char *crlf = "\r\n";
@@ -260,73 +264,76 @@
printf("\n");
}
#endif
-
-/* Get the value of a server (CGI) variable as a string
- */
-static int GetVariable(private_ws_t *ws, char *hdrName,
- char *buf, DWORD bufsz, char **dest, const char *dflt)
-{
- int errID;
-
- if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID))
- *dest = jk_pool_strdup(&ws->p, buf);
- else
- *dest = jk_pool_strdup(&ws->p, dflt);
-
- DEBUG(("%s = %s\n", hdrName, *dest));
-
- return JK_TRUE;
-}
-
-/* Get the value of a server (CGI) variable as an integer
- */
-static int GetVariableInt(private_ws_t *ws, char *hdrName,
- char *buf, DWORD bufsz, int *dest, int dflt)
-{
- int errID;
-
- if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID))
- *dest = atoi(buf);
- else
- *dest = dflt;
-
- DEBUG(("%s = %d\n", hdrName, *dest));
-
- return JK_TRUE;
-}
-/* Get the value of a server (CGI) variable as an integer
- */
-static int GetVariableBool(private_ws_t *ws, char *hdrName,
- char *buf, DWORD bufsz, int *dest, int dflt)
-{
- int errID;
-
- 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;
- }
-
- DEBUG(("%s = %d\n", hdrName, *dest));
-
- return JK_TRUE;
-}
-
-/* A couple of utility macros to supply standard arguments to GetVariable() and
- * GetVariableInt().
- */
-#define GETVARIABLE(name, dest, dflt) GetVariable(ws, (name), workBuf, sizeof(workBuf), (dest), (dflt))
-#define GETVARIABLEINT(name, dest, dflt) GetVariableInt(ws, (name), workBuf, sizeof(workBuf), (dest), (dflt))
-#define GETVARIABLEBOOL(name, dest, dflt) GetVariableBool(ws, (name), workBuf, sizeof(workBuf), (dest), (dflt))
+
+/* Get the value of a server (CGI) variable as a string
+
+ */
+
+static int GetVariable(private_ws_t *ws, char *hdrName,
+ char *buf, DWORD bufsz, char **dest, const char *dflt)
+{
+ int errID;
+
+ if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID))
+ *dest = jk_pool_strdup(&ws->p, buf);
+ else
+ *dest = jk_pool_strdup(&ws->p, dflt);
+
+ DEBUG(("%s = %s\n", hdrName, *dest));
+
+ return JK_TRUE;
+}
+
+/* Get the value of a server (CGI) variable as an integer
+ */
+static int GetVariableInt(private_ws_t *ws, char *hdrName,
+ char *buf, DWORD bufsz, int *dest, int dflt)
+{
+ int errID;
+
+ if (ws->context->GetServerVariable(ws->context, hdrName, buf, bufsz, &errID))
+ *dest = atoi(buf);
+ else
+ *dest = dflt;
+
+ DEBUG(("%s = %d\n", hdrName, *dest));
+
+ return JK_TRUE;
+}
+/* Get the value of a server (CGI) variable as an integer
+ */
+static int GetVariableBool(private_ws_t *ws, char *hdrName,
+ char *buf, DWORD bufsz, int *dest, int dflt)
+{
+ int errID;
+
+ 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;
+ }
+
+ DEBUG(("%s = %d\n", hdrName, *dest));
+
+ return JK_TRUE;
+}
+
+/* A couple of utility macros to supply standard arguments to GetVariable() and
+ * GetVariableInt().
+ */
+#define GETVARIABLE(name, dest, dflt) GetVariable(ws, (name), workBuf, sizeof(workBuf), (dest), (dflt))
+#define GETVARIABLEINT(name, dest, dflt) GetVariableInt(ws, (name), workBuf, sizeof(workBuf), (dest), (dflt))
+#define GETVARIABLEBOOL(name, dest, dflt) GetVariableBool(ws, (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
* FindPathElem() actually looks for the string bounded by path punctuation
@@ -439,7 +446,6 @@
jk_log(logger, JK_LOG_ERROR, "jk_ws_service_t::StartResponse, NULL parameters\n");
return JK_FALSE;
-
}
static int JK_METHOD Read(jk_ws_service_t * s, void *bytes, unsigned len, unsigned *countp)
@@ -542,8 +548,10 @@
wc_close(logger);
if (logger)
jk_close_file_logger(&logger);
-
- initDone = JK_FALSE;
+
+
+ initDone = JK_FALSE;
+
}
if (NULL != tomcatStop && '\0' != *tomcatStop)
@@ -558,7 +566,8 @@
return kFilterHandledEvent;
}
-
+
+
/* Called when Domino loads the filter. Reads a load of config data from
* the registry and elsewhere and displays a banner.
*/
@@ -836,35 +845,47 @@
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_FALSE;
-
- s->method = methodName[ws->reqData->requestMethod];
-
- s->headers_names = NULL;
- s->headers_values = NULL;
- s->num_headers = 0;
+
+ if (ws->reqData->requestMethod < 0 ||
+
+ ws->reqData->requestMethod >= sizeof(methodName) / sizeof(methodName[0]))
+
+ return JK_FALSE;
+
+
+
+ s->method = methodName[ws->reqData->requestMethod];
+
+
+
+ s->headers_names = NULL;
+
+ s->headers_values = NULL;
+
+ s->num_headers = 0;
+
+
s->ssl_cert_len = fr.clientCertLen;
s->ssl_cert = fr.clientCert;
s->ssl_cipher = NULL; /* required by Servlet 2.3 Api */
s->ssl_session = NULL;
-
-#if defined(JK_VERSION) && JK_VERSION >= MAKEVERSION(1, 2, 0, 1)
- s->ssl_key_size = -1; /* required by Servlet 2.3 Api, added in jtc */
-#endif
-
- if (s->is_ssl)
- {
- int dummy;
-#if 0
+
+
+#if defined(JK_VERSION) && JK_VERSION >= MAKEVERSION(1, 2, 0, 1)
+ s->ssl_key_size = -1; /* required by Servlet 2.3 Api, added in jtc */
+#endif
+
+ if (s->is_ssl)
+ {
+ int dummy;
+
+#if 0
+
char *sslNames[] =
{
"CERT_ISSUER", "CERT_SUBJECT", "CERT_COOKIE", "CERT_FLAGS", "CERT_SERIALNUMBER",
@@ -876,24 +897,23 @@
NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL
};
-
unsigned i, varCount = 0;
-#endif
+#endif
DEBUG(("SSL request\n"));
-
-#if defined(JK_VERSION) && JK_VERSION >= MAKEVERSION(1, 2, 0, 1)
- /* 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);
-#else
- (void) dummy;
-#endif
-
+
+#if defined(JK_VERSION) && JK_VERSION >= MAKEVERSION(1, 2, 0, 1)
+ /* 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);
+#else
+ (void) dummy;
+#endif
+
#if 0
for (i = 0; i < sizeof(sslNames)/sizeof(sslNames[0]); i++)
{
@@ -901,13 +921,13 @@
if (sslValues[i]) varCount++;
}
- /* Andy, some SSL vars must be mapped directly in s->ssl_cipher,
- * ssl->session and s->ssl_key_size
- * ie:
- * Cipher could be "RC4-MD5"
- * KeySize 128 (bits)
- * SessionID a string containing the UniqID used in SSL dialogue
- */
+ /* Andy, some SSL vars must be mapped directly in s->ssl_cipher,
+ * ssl->session and s->ssl_key_size
+ * ie:
+ * Cipher could be "RC4-MD5"
+ * KeySize 128 (bits)
+ * SessionID a string containing the UniqID used in SSL dialogue
+ */
if (varCount > 0)
{
unsigned j;
@@ -927,7 +947,8 @@
}
s->num_attributes = varCount;
}
-#endif
+#endif
+
}
/* Duplicate all the headers now */
@@ -965,65 +986,64 @@
{
char *uri = fr.URL;
char *workerName, *qp;
-
- if (!initDone)
- {
- /* One time initialisation which is deferred so that we have the name of
- * the server software to plug into worker_env
- */
- int ok = JK_FALSE;
- jk_map_t *map = NULL;
-
- DEBUG(("Initialising worker map\n"));
-
- if (map_alloc(&map))
- {
- if (map_read_properties(map, workerMountFile))
- if (uri_worker_map_alloc(&uw_map, map, logger))
- ok = JK_TRUE;
- map_free(&map);
- }
-
- DEBUG(("Got the URI worker map\n"));
-
- if (ok)
- {
- ok = JK_FALSE;
- DEBUG(("About to allocate map\n"));
- if (map_alloc(&map))
- {
- DEBUG(("About to read %s\n", workerFile));
- if (map_read_properties(map, workerFile))
- {
-#if defined(JK_VERSION) && JK_VERSION >= MAKEVERSION(1, 2, 0, 1)
- char server[256];
-
- worker_env.uri_to_worker = uw_map;
- if (context->GetServerVariable(context, "SERVER_SOFTWARE", server, sizeof(server)-1, &errID))
- worker_env.server_name = jk_pool_strdup(&cfgPool, server);
- else
- worker_env.server_name = SERVERDFLT;
-
- DEBUG(("Server name %s\n", worker_env.server_name));
-
- if (wc_open(map, &worker_env, logger))
- ok = JK_TRUE;
-#else
- if (wc_open(map, logger))
- ok = JK_TRUE;
-#endif
- DEBUG(("OK = %d\n", ok));
- }
-
- DEBUG(("Read %s, OK = %d\n", workerFile, ok));
- map_free(&map);
- }
- }
-
- if (!ok) return kFilterError;
- initDone = JK_TRUE;
- }
-
+
+ if (!initDone)
+ {
+ /* One time initialisation which is deferred so that we have the name of
+ * the server software to plug into worker_env
+ */
+ int ok = JK_FALSE;
+ jk_map_t *map = NULL;
+
+ DEBUG(("Initialising worker map\n"));
+
+ if (map_alloc(&map))
+ {
+ if (map_read_properties(map, workerMountFile))
+ if (uri_worker_map_alloc(&uw_map, map, logger))
+ ok = JK_TRUE;
+ map_free(&map);
+ }
+
+ DEBUG(("Got the URI worker map\n"));
+
+ if (ok)
+ {
+ ok = JK_FALSE;
+ DEBUG(("About to allocate map\n"));
+ if (map_alloc(&map))
+ {
+ DEBUG(("About to read %s\n", workerFile));
+ if (map_read_properties(map, workerFile))
+ {
+#if defined(JK_VERSION) && JK_VERSION >= MAKEVERSION(1, 2, 0, 1)
+ char server[256];
+
+ worker_env.uri_to_worker = uw_map;
+ if (context->GetServerVariable(context, "SERVER_SOFTWARE", server, sizeof(server)-1, &errID))
+ worker_env.server_name = jk_pool_strdup(&cfgPool, server);
+ else
+ worker_env.server_name = SERVERDFLT;
+
+ DEBUG(("Server name %s\n", worker_env.server_name));
+
+ if (wc_open(map, &worker_env, logger))
+ ok = JK_TRUE;
+#else
+ if (wc_open(map, logger))
+ ok = JK_TRUE;
+#endif
+ DEBUG(("OK = %d\n", ok));
+ }
+
+ DEBUG(("Read %s, OK = %d\n", workerFile, ok));
+ map_free(&map);
+ }
+ }
+
+ if (!ok) return kFilterError;
+ initDone = JK_TRUE;
+ }
if (qp = strchr(uri, '?'), qp != NULL) *qp = '\0';
workerName = map_uri_to_worker(uw_map, uri, logger);