You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2002/11/22 11:38:17 UTC
DO NOT REPLY [Bug 14763] New: -
Virtual hosts with different AssignUserID works from the same user
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: bugs@httpd.apache.org
ReportedBy: admin@ter-net.com
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 webmaster@dummy-host.example.com
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 webmaster@dummy-host.example.com
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: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org