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=14763>. 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=14763 Virtual hosts with different AssignUserID works from the same user Summary: Virtual hosts with different AssignUserID works from the same user Product: Apache httpd-2.0 Version: 2.0.43 Platform: PC OS/Version: Linux Status: NEW Severity: Critical Priority: Other Component: perchild AssignedTo: [email protected] ReportedBy: [EMAIL PROTECTED] I run apache (with mpm perchild) on linux with NameBased virtual host in such a way: ... <IfModule perchild.c> NumServers 2 StartThreads 10 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 2000 MaxRequestsPerChild 1000 ChildPerUserID soloma users 1 ChildPerUserID boris users 1 </IfModule> ... <VirtualHost *> AssignUserId boris users ServerAdmin [EMAIL PROTECTED] DocumentRoot /var/home/boris/www/ ServerName boris.hosts ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> <VirtualHost *> AssignUserId soloma users ServerAdmin [EMAIL PROTECTED] DocumentRoot /var/home/soloma/www/ ServerName soloma.hosts ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> In this case both hosts (soloma.hosts, boris.hosts) works from the same user. Possible reason: in function perchild_post_read: ///// ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, "Determining if request should be passed. " "Child Num: %d, SD: %d, sd from table: %d, hostname from server: %s", child_num, sconf->input, child_info_table[child_num].input, r->server->server_hostname); /* sconf is the server config for this vhost, so if our socket * is not the same that was set in the config, then the request * needs to be passed to another child. */ if (sconf->input != child_info_table[child_num].input) { ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, "Passing request."); if (pass_request(r) == -1) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, "Could not pass request to proper " "child, request will not be honored."); } longjmp(jmpbuffer, 1); ////////////// I think this is incorrect for several virtual hosts Correct version may be like this: ///// if (sconf->input != child_info_table[child_num].input) { ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, "Passing request."); for(i=0; i< num_daemons;i++) { if(sconf->input == child_info_table[i].input) { if (pass_request(r, i) == -1) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, "Could not pass request to proper " "child, request will not be honored."); } break; } } longjmp(jmpbuffer, 1); } ///// --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
