DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8464>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8464 mod_rewrite not executing external rewriting engine if args are supplied [EMAIL PROTECTED] changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|mod_rewrite not executing |mod_rewrite not executing |external rewriting engine |external rewriting engine if | |args are supplied ------- Additional Comments From [EMAIL PROTECTED] 2002-05-22 16:50 ------- I've looked into this a bit further with 2.0.36, and also compared to 1.3.24. In 1.3.24, mod_rewrite execl's a shell process itself in the function rewritemap_program_child(), passing the user-supplied config line as an argument: execl(SHELL_PATH, SHELL_PATH, "-c", (char *)cmd, NULL); This works, even if you supply arguments to the program to be run. In 2.0.36 it leaves the exec to APR: 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))) != 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); This works when the program doesn't have arguments to be passed, but fails if there are arguments. Looking at the apr_proc_create() function: else if (attr->cmdtype == APR_PROGRAM) { if (attr->detached) { apr_proc_detach(APR_PROC_DETACH_DAEMONIZE); } execve(progname, (char * const *)args, (char * const *)env); } NERK! The whole user-supplied string is passed as progname, with args and env empty. I can get around this by running a shell script that runs my program with arguments, but that's kinda messy. I'd prefer to see mod_rewrite handle this correctly and pass in the args. If I get time, I'll settle down and fix this. If anyone wants to beat me to it.... --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]