You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by hg...@apache.org on 2001/06/07 16:36:51 UTC
cvs commit: jakarta-tomcat-connectors/jk/src/native/common jk_ajp14_worker.c jk_ajp14_worker.h
hgomez 01/06/07 07:36:51
Modified: jk/src/native/common jk_ajp14_worker.c jk_ajp14_worker.h
Log:
Initial AJP14 worker.
Later will be implemented login and context infos.
Revision Changes Path
1.2 +101 -10 jakarta-tomcat-connectors/jk/src/native/common/jk_ajp14_worker.c
Index: jk_ajp14_worker.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/native/common/jk_ajp14_worker.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jk_ajp14_worker.c 2001/05/18 16:47:31 1.1
+++ jk_ajp14_worker.c 2001/06/07 14:36:46 1.2
@@ -56,29 +56,120 @@
/***************************************************************************
* Description: AJP14 next generation Bi-directional protocol. *
* Author: Henri Gomez <hg...@slib.fr> *
- * Version: $Revision: 1.1 $ *
+ * Version: $Revision: 1.2 $ *
***************************************************************************/
+#include "jk_context.h"
#include "jk_ajp14_worker.h"
-int JK_METHOD ajp14_worker_factory(jk_worker_t **w,
- const char *name,
- jk_logger_t *l)
+/* -------------------- Method -------------------- */
+static int JK_METHOD validate(jk_worker_t *pThis,
+ jk_map_t *props,
+ jk_logger_t *l)
+{
+ ajp_worker_t *aw;
+ char * secret_key;
+
+ if (ajp_validate(pThis, props, l, AJP14_PROTO) == JK_FALSE)
+ return JK_FALSE;
+
+ aw = pThis->worker_private;
+
+ secret_key = jk_get_worker_secret_key(props, aw->name);
+
+ if ((!secret_key) || (!strlen(secret_key))) {
+ jk_log(l, JK_LOG_ERROR, "validate error, empty or missing secretkey\n");
+ return JK_FALSE;
+ }
+
+ return JK_TRUE;
+}
+
+static int JK_METHOD init(jk_worker_t *pThis,
+ jk_map_t *props,
+ jk_logger_t *l)
{
- ajp14_worker_t *private_data =
- (ajp14_worker_t *)malloc(sizeof(ajp14_worker_t));
+ ajp_worker_t *aw;
+ char *secret_key;
+
+ if (ajp_init(pThis, props, l, AJP14_PROTO) == JK_FALSE)
+ return JK_FALSE;
+
+ aw = pThis->worker_private;
+
+ aw->login->secret_key = jk_get_worker_secret_key(props, aw->name);
+ return JK_TRUE;
+}
+
+static int JK_METHOD destroy(jk_worker_t **pThis,
+ jk_logger_t *l)
+{
+ ajp_worker_t *aw = (*pThis)->worker_private;
+
+ if (aw->login)
+ free(aw->login);
+
+ return (ajp_destroy(pThis, l, AJP14_PROTO));
+}
+
+static int JK_METHOD get_endpoint(jk_worker_t *pThis,
+ jk_endpoint_t **pend,
+ jk_logger_t *l)
+{
+ return (ajp_get_endpoint(pThis, pend, l, AJP14_PROTO));
+}
+
+int JK_METHOD ajp14_worker_factory(jk_worker_t **w,
+ const char *name,
+ jk_logger_t *l)
+{
+ ajp_worker_t *aw = (ajp_worker_t *)malloc(sizeof(ajp_worker_t));
+
jk_log(l, JK_LOG_DEBUG, "Into ajp14_worker_factory\n");
if (name == NULL || w == NULL) {
jk_log(l, JK_LOG_ERROR, "In ajp14_worker_factory, NULL parameters\n");
- return JK_FALSE;
+ return JK_FALSE;
}
-
- if(!private_data) {
- jk_log(l, JK_LOG_ERROR, "In ajp14_worker_factory, can't allocate private_data\n");
- return JK_FALSE;
+
+ if (! aw) {
+ jk_log(l, JK_LOG_ERROR, "In ajp14_worker_factory, malloc of private data failed\n");
+ return JK_FALSE;
}
+ aw->name = strdup(name);
+
+ if (! aw->name) {
+ free(aw);
+ jk_log(l, JK_LOG_ERROR, "In ajp14_worker_factory, malloc failed for name\n");
+ return JK_FALSE;
+ }
+
+ aw->proto = AJP14_PROTO;
+
+ aw->login = (jk_login_service_t *)malloc(sizeof(jk_login_service_t));
+
+ if (aw->login == NULL) {
+ jk_log(l, JK_LOG_ERROR, "In ajp14_worker_factory, malloc failed for login area\n");
+ return JK_FALSE;
+ }
+
+ memset(aw->login, 0, sizeof(jk_login_service_t));
+
+ aw->login->negociation = (AJP14_CONTEXT_INFO_NEG | AJP14_PROTO_SUPPORT_AJP14_NEG);
+ aw->login->web_server_name = "MyApache";
+
+ aw->ep_cache_sz = 0;
+ aw->ep_cache = NULL;
+ aw->connect_retry_attempts = AJP_DEF_RETRY_ATTEMPTS;
+ aw->worker.worker_private = aw;
+
+ aw->worker.validate = validate;
+ aw->worker.init = init;
+ aw->worker.get_endpoint = get_endpoint;
+ aw->worker.destroy = destroy;
+
+ *w = &aw->worker;
return JK_TRUE;
}
1.2 +0 -9 jakarta-tomcat-connectors/jk/src/native/common/jk_ajp14_worker.h
Index: jk_ajp14_worker.h
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/native/common/jk_ajp14_worker.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jk_ajp14_worker.h 2001/05/18 16:47:31 1.1
+++ jk_ajp14_worker.h 2001/06/07 14:36:48 1.2
@@ -56,7 +56,7 @@
/***************************************************************************
* Description: ajpv14 worker header file *
* Author: Henri Gomez <hg...@slib.fr> *
- * Version: $Revision: 1.1 $ *
+ * Version: $Revision: 1.2 $ *
***************************************************************************/
#ifndef JK_AJP14_WORKER_H
@@ -77,15 +77,6 @@
#endif /* __cplusplus */
#define JK_AJP14_WORKER_NAME ("ajp14")
-
-/*
- *
- */
-struct ajp14_worker {
- ajp13_worker_t * ajp_worker;
-};
-typedef struct ajp14_worker ajp14_worker_t;
-
int JK_METHOD ajp14_worker_factory(jk_worker_t **w,
const char *name,