Changes with Apache 2.0.37
+ *) Allow RewriteMap prg:'s to take command-line arguments. PR 8464.
+ [James Tait <JTait@wyrddreams.demon.co.uk>]
+
*) Correctly return 413 when an invalid chunk size is given on
input. Also modify ap_discard_request_body to not do anything
on sub-requests or when the connection will be dropped.
else if (strncmp(a2, "prg:", 4) == 0) {
newmap->type = MAPTYPE_PRG;
newmap->datafile = a2+4;
- newmap->checkfile = a2+4;
+ newmap->checkfile = NULL;
}
else if (strncmp(a2, "int:", 4) == 0) {
newmap->type = MAPTYPE_INT;
&& (apr_stat(&st, newmap->checkfile, APR_FINFO_MIN,
cmd->pool) != APR_SUCCESS)) {
return apr_pstrcat(cmd->pool,
- "RewriteMap: map file or program not found:",
+ "RewriteMap: map file not found:",
newmap->checkfile, NULL);
}
apr_status_t rc;
apr_procattr_t *procattr;
apr_proc_t *procnew;
+ char **argv;
+
+ rc = apr_tokenize_to_argv(progname, &argv, p);
if (((rc = apr_procattr_create(&procattr, p)) != APR_SUCCESS) ||
((rc = apr_procattr_io_set(procattr, APR_FULL_BLOCK,
APR_FULL_NONBLOCK,
APR_FULL_NONBLOCK)) != APR_SUCCESS) ||
((rc = apr_procattr_dir_set(procattr,
- ap_make_dirstr_parent(p, progname)))
+ ap_make_dirstr_parent(p, argv[0])))
!= APR_SUCCESS) ||
((rc = apr_procattr_cmdtype_set(procattr, APR_PROGRAM)) != APR_SUCCESS)) {
/* Something bad happened, give up and go away. */
}
else {
procnew = apr_pcalloc(p, sizeof(*procnew));
- rc = apr_proc_create(procnew, progname, NULL, NULL, procattr, p);
+ rc = apr_proc_create(procnew, argv[0], (const char **)argv, NULL,
+ procattr, p);
if (rc == APR_SUCCESS) {
apr_pool_note_subprocess(p, procnew, APR_KILL_AFTER_TIMEOUT);