ap_send_http_header deprecated, revised for Apache 2.0.14
diff --git a/NEWS b/NEWS
index ea6ff65..eab5e91 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+Changes in 1.0d6
+--------------------------------------------------------------------------------
+
+- ap_send_http_header no longer does anything so the command just returns TCL_OK which essentially makes it null, I'll probably get rid of it later.
+- made changes in league with Apache 2.0.14. Handlers were moved around etc.
+
Changes in 1.0d5
--------------------------------------------------------------------------------
@@ -15,11 +21,13 @@
5. Add filters?
6. libapreq (doesn't appear to be ported to 2.0 completley yet...)
7. Decide what goals need to be acheived for release 1.0
+8. Make necessary changes along with Apache 2.0 revisions.
Map
--------------------------------------------------------------------------------
- 1.0d0 -| Inital port from mod_tcl* 0.26, single file split into 4
+ | (Apache 2.0a9)
|
- 1.0d1 -| removal of nasties, update of configuration
|
@@ -29,9 +37,11 @@
|
- 1.0d4 -| Documentation, 99% of API exposed
|
-* 1.0d5 *| constants commands in ::apache namespace, mmap checking, test script
+- 1.0d5 -| constants commands in ::apache namespace, mmap checking, test
+ | script
|
-- 1.0d6 -|
+* 1.0d6 *| ap_send_http_header deprecated, updated to be peachy with
+ | Apache 2.0.14
|
- 1.0d7 -|
|
@@ -40,4 +50,3 @@
- 1.0d9 -|
|
- 1.0.0 -|
-
diff --git a/tcl_cmds.c b/tcl_cmds.c
index 32d0663..3b24632 100644
--- a/tcl_cmds.c
+++ b/tcl_cmds.c
@@ -1075,10 +1075,10 @@
return TCL_ERROR;
}
- _r->allowed_methods->method_list = apr_make_array(_r->allowed_methods->method_list->cont, xxobjc, sizeof(char*));
+ _r->allowed_methods->method_list = (apr_array_header_t*) apr_array_make(_r->allowed_methods->method_list->cont, xxobjc, sizeof(char*));
for (i = 0; i < xxobjc; i++) {
- char *xx = apr_push_array(_r->allowed_methods->method_list);
+ char *xx = (char*) apr_array_push(_r->allowed_methods->method_list);
xx = apr_pstrdup(_r->allowed_methods->method_list->cont, Tcl_GetString(xxobjv[i]));
}
@@ -1158,10 +1158,10 @@
return TCL_ERROR;
}
- _r->content_languages = apr_make_array(_r->content_languages->cont, xxobjc, sizeof(char*));
+ _r->content_languages = apr_array_make(_r->content_languages->cont, xxobjc, sizeof(char*));
for (i = 0; i < xxobjc; i++) {
- char *xx = apr_push_array(_r->content_languages);
+ char *xx = apr_array_push(_r->content_languages);
xx = apr_pstrdup(_r->content_languages->cont, Tcl_GetString(xxobjv[i]));
}
@@ -1773,6 +1773,7 @@
int cmd_ap_send_http_header(ClientData cd, Tcl_Interp *ixx, int objc, Tcl_Obj *CONST objv[])
{
+/*
Tcl_Obj *obj;
obj = Tcl_GetVar2Ex(interp, "content_type", NULL, 0);
@@ -1782,6 +1783,7 @@
}
ap_send_http_header(_r);
+*/
return TCL_OK;
}
diff --git a/tcl_core.c b/tcl_core.c
index c7cdec9..fc78e12 100644
--- a/tcl_core.c
+++ b/tcl_core.c
@@ -79,7 +79,7 @@
static const char* tcl_set(cmd_parms *parms, void *mconfig, const char *one, const char *two, const char *three);
static const char* tcl_setlist(cmd_parms *parms, void *mconfig, const char *one, const char *two);
static const char* tcl_raw_args(cmd_parms *parms, void *mconfig, char *arg);
-static const char *tcl_no_args(cmd_parms *parms, void *mconfig);
+static const char* tcl_no_args(cmd_parms *parms, void *mconfig);
typedef const char* (*fz_t)(void);
@@ -108,25 +108,21 @@
{ NULL }
};
-static handler_rec tcl_handlers[] = {
- { "tcl-handler", tcl_handler },
- { NULL, NULL }
-};
-
-static void register_hooks(void)
+static void register_hooks(apr_pool_t *p)
{
- ap_hook_pre_config(tcl_init, NULL, NULL, AP_HOOK_REALLY_FIRST);
- ap_hook_post_config(tcl_init_handler, NULL, NULL, AP_HOOK_MIDDLE);
+ ap_hook_pre_config(tcl_init, NULL, NULL, APR_HOOK_REALLY_FIRST);
+ ap_hook_post_config(tcl_init_handler, NULL, NULL, APR_HOOK_MIDDLE);
-// ap_hook_post_read_request(tcl_post_read_request, NULL, NULL, AP_HOOK_MIDDLE);
-// ap_hook_translate_name(tcl_translate_name, NULL, NULL, AP_HOOK_MIDDLE);
- ap_hook_header_parser(tcl_header_parser, NULL, NULL, AP_HOOK_MIDDLE);
- ap_hook_access_checker(tcl_access_checker, NULL, NULL, AP_HOOK_MIDDLE);
- ap_hook_check_user_id(tcl_check_user_id, NULL, NULL, AP_HOOK_MIDDLE);
- ap_hook_auth_checker(tcl_auth_checker, NULL, NULL, AP_HOOK_MIDDLE);
- ap_hook_type_checker(tcl_type_checker, NULL, NULL, AP_HOOK_MIDDLE);
- ap_hook_fixups(tcl_fixups, NULL, NULL, AP_HOOK_MIDDLE);
- ap_hook_log_transaction(tcl_log_transaction, NULL, NULL, AP_HOOK_MIDDLE);
+// ap_hook_post_read_request(tcl_post_read_request, NULL, NULL, APR_HOOK_MIDDLE);
+// ap_hook_translate_name(tcl_translate_name, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_header_parser(tcl_header_parser, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_access_checker(tcl_access_checker, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_check_user_id(tcl_check_user_id, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_auth_checker(tcl_auth_checker, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_type_checker(tcl_type_checker, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_fixups(tcl_fixups, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_handler(tcl_handler, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_log_transaction(tcl_log_transaction, NULL, NULL, APR_HOOK_MIDDLE);
}
AP_DECLARE_DATA module tcl_module = {
@@ -136,7 +132,6 @@
NULL, /* create per-server config structure */
NULL, /* merge per-server config structures */
tcl_commands, /* command apr_table_t */
- tcl_handlers, /* handlers */
register_hooks /* register hooks */
};
@@ -158,8 +153,8 @@
tcl_config_rec *tclr = (tcl_config_rec*) apr_pcalloc(p, sizeof(tcl_config_rec));
tclr->fl = 0;
- tclr->var_list = apr_make_array(p, 0, sizeof(var_cache));
- tclr->raw_list = apr_make_array(p, 0, sizeof(char*));
+ tclr->var_list = apr_array_make(p, 0, sizeof(var_cache));
+ tclr->raw_list = apr_array_make(p, 0, sizeof(char*));
memset(tclr->handlers, 0, NUM_HANDLERS * sizeof(char*));
@@ -195,7 +190,7 @@
{
tcl_config_rec *tclr = (tcl_config_rec*) mconfig;
char *ptr2, *ptr3;
- var_cache *var = (var_cache*) apr_push_array(tclr->var_list);
+ var_cache *var = (var_cache*) apr_array_push(tclr->var_list);
if (three == NULL) {
ptr2 = NULL;
@@ -218,7 +213,7 @@
static const char* tcl_setlist(cmd_parms *parms, void *mconfig, const char *one, const char *two)
{
tcl_config_rec *tclr = (tcl_config_rec*) mconfig;
- var_cache *var = (var_cache*) apr_push_array(tclr->var_list);
+ var_cache *var = (var_cache*) apr_array_push(tclr->var_list);
var->var1 = apr_pstrdup(parms->pool, one);
var->var2 = apr_pstrdup(parms->pool, two);
@@ -234,7 +229,7 @@
char l[MAX_STRING_LEN];
char **line, *script, **xx;
int i, j = 0, k = 0;
- apr_array_header_t *temp = apr_make_array(parms->pool, 0, sizeof(char*));
+ apr_array_header_t *temp = apr_array_make(parms->pool, 0, sizeof(char*));
char **temp_elts = (char**) temp->elts;
while (!(ap_cfg_getline(l, MAX_STRING_LEN, parms->config_file))) {
@@ -242,7 +237,7 @@
goto cleanup;
}
- line = (char**) apr_push_array(temp);
+ line = (char**) apr_array_push(temp);
j += asprintf(line, l);
k++;
}
@@ -262,7 +257,7 @@
script[j] = '\0';
- xx = (char**) apr_push_array(tclr->raw_list);
+ xx = (char**) apr_array_push(tclr->raw_list);
*xx = apr_pstrdup(parms->pool, script);
free(script);
@@ -348,7 +343,7 @@
char *buf;
_pconf = pconf;
- fcache = apr_make_array(pconf, 0, sizeof(file_cache));
+ fcache = apr_array_make(pconf, 0, sizeof(file_cache));
interp = Tcl_CreateInterp();
@@ -357,7 +352,7 @@
exit(1);
}
- apr_register_cleanup(pconf, NULL, tcl_cleanup, apr_null_cleanup);
+ apr_pool_cleanup_register(pconf, NULL, tcl_cleanup, apr_pool_cleanup_null);
/* misc util */
Tcl_CreateObjCommand(interp, "apache::abort", cmd_abort, NULL, NULL);
@@ -573,7 +568,7 @@
static void tcl_init_handler(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
{
- ap_add_version_component(pconf, "mod_tcl/1.0d5");
+ ap_add_version_component(pconf, "mod_tcl/1.0d6");
}
static int run_handler(request_rec *r, int hh)
@@ -640,7 +635,7 @@
close(fd);
- fptr = (file_cache*) apr_push_array(fcache);
+ fptr = (file_cache*) apr_array_push(fcache);
fptr->file = apr_pstrdup(fcache->cont, r->filename);
memcpy(&(fptr->st), &st, sizeof(struct stat));
@@ -727,7 +722,7 @@
close(fd);
- fptr = (file_cache*) apr_push_array(fcache);
+ fptr = (file_cache*) apr_array_push(fcache);
fptr->file = apr_pstrdup(fcache->cont, r->filename);
memcpy(&(fptr->st), &st, sizeof(struct stat));
@@ -760,7 +755,7 @@
ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r->server, "Tcl_EvalObjEx(%s): %s", eptr, Tcl_GetStringResult(interp));
r->content_type = "text/html";
- ap_send_http_header(r);
+// ap_send_http_header(r);
ap_rprintf(r, "<H3>TCL Error</H3><BR><PRE>%s</PRE>", Tcl_GetString(Tcl_GetVar2Ex(interp, "errorInfo", NULL, 0)));
@@ -775,6 +770,10 @@
static int tcl_handler(request_rec *r)
{
+ if (strcmp("tcl-handler", r->handler)) {
+ return DECLINED;
+ }
+
return run_handler(r, 0);
}