diff -ur httpd-2.2.13/modules/ssl/mod_ssl.h httpd-2.2.13-lazy/modules/ssl/mod_ssl.h
--- httpd-2.2.13/modules/ssl/mod_ssl.h	2006-07-12 05:38:44.000000000 +0200
+++ httpd-2.2.13-lazy/modules/ssl/mod_ssl.h	2009-08-30 21:28:47.000000000 +0200
@@ -50,6 +50,10 @@
  * is using SSL/TLS. */
 APR_DECLARE_OPTIONAL_FN(int, ssl_is_https, (conn_rec *));
 
+/** An optional function which returns non-zero if the given server
+ * is using SSL/TLS. */
+APR_DECLARE_OPTIONAL_FN(int, ssl_server_is_https, (server_rec *));
+
 /** The ssl_proxy_enable() and ssl_engine_disable() optional functions
  * are used by mod_proxy to enable use of SSL for outgoing
  * connections. */
Only in httpd-2.2.13-lazy/modules/ssl: modules.mk
diff -ur httpd-2.2.13/modules/ssl/ssl_engine_vars.c httpd-2.2.13-lazy/modules/ssl/ssl_engine_vars.c
--- httpd-2.2.13/modules/ssl/ssl_engine_vars.c	2009-08-06 09:28:47.000000000 +0200
+++ httpd-2.2.13-lazy/modules/ssl/ssl_engine_vars.c	2009-08-30 21:28:08.000000000 +0200
@@ -58,6 +58,12 @@
     return sslconn && sslconn->ssl;
 }
 
+static int ssl_server_is_https(server_rec *c)
+{
+    SSLSrvConfigRec *sslconn = mySrvConfig(c);
+    return sslconn && sslconn->enabled;
+}
+
 static const char var_interface[] = "mod_ssl/" MOD_SSL_VERSION;
 static char var_library_interface[] = SSL_LIBRARY_TEXT;
 static char *var_library = NULL;
@@ -67,6 +73,7 @@
     char *cp, *cp2;
 
     APR_REGISTER_OPTIONAL_FN(ssl_is_https);
+    APR_REGISTER_OPTIONAL_FN(ssl_server_is_https);
     APR_REGISTER_OPTIONAL_FN(ssl_var_lookup);
     APR_REGISTER_OPTIONAL_FN(ssl_ext_lookup);
 
diff -ur httpd-2.2.13/server/mpm/experimental/peruser/peruser.c httpd-2.2.13-lazy/server/mpm/experimental/peruser/peruser.c
--- httpd-2.2.13/server/mpm/experimental/peruser/peruser.c	2009-08-30 21:53:12.000000000 +0200
+++ httpd-2.2.13-lazy/server/mpm/experimental/peruser/peruser.c	2009-08-30 21:43:45.000000000 +0200
@@ -132,6 +132,12 @@
 #include <sys/times.h>
 
 
+// function added to mod_ssl and exported (there ware nothing usefull for us in the current api)
+typedef int (*ssl_server_is_https_t)(server_rec*);
+
+ssl_server_is_https_t ssl_server_is_https = NULL;
+
+
 #ifdef MPM_PERUSER_DEBUG
 # define _DBG(text,par...) \
     ap_log_error(APLOG_MARK, APLOG_WARNING, 0, NULL, \
@@ -983,6 +989,7 @@
     child_info_t *processor;
     apr_pool_t *ptrans;
     peruser_server_conf *sconf;
+	int ssl_on=0;
 
     _DBG("Creating dummy connection to use the vhost lookup api", 0);
 
@@ -996,8 +1003,14 @@
 		    current_conn->vhost_lookup_data ? "on" : "off");
     }
 
-    if (current_conn && !current_conn->vhost_lookup_data && CHILD_INFO_TABLE[my_child_num].type == CHILD_TYPE_MULTIPLEXER) {
-    	_DBG("We are not using name based vhosts, we'll directly pass the socket.");
+	//check for ssl configuration for this server (ssl_server_is_https is NULL i w have no mod_ssl)
+	if(ssl_server_is_https)
+		ssl_on=ssl_server_is_https(current_conn->base_server);
+	
+	//pass socket if there is no NameVirtualhost or ssl is enabled on this server
+    if ( current_conn && ( !current_conn->vhost_lookup_data || ssl_on ) && CHILD_INFO_TABLE[my_child_num].type == CHILD_TYPE_MULTIPLEXER ) {
+
+    _DBG("We are not using name based vhosts, we'll directly pass the socket.");
 	
 	sconf = PERUSER_SERVER_CONF(current_conn->base_server->module_config);
 	processor = &CHILD_INFO_TABLE[sconf->senv->processor_id];
@@ -2372,7 +2385,7 @@
                      "ignored during restart");
         changed_limit_at_restart = 0;
     }
-
+		
     ap_server_conf = s;
 
     /* Initialize cross-process accept lock */
@@ -2953,6 +2966,9 @@
 {
     ap_child_table = (ap_ctable *)apr_pcalloc(p, server_limit * sizeof(ap_ctable));
 
+	//refresh ssl_server_is_https in case mod_ssl was removed from config before restart
+	ssl_server_is_https = (ssl_server_is_https_t) apr_dynamic_fn_retrieve("ssl_server_is_https");
+
     return OK;
 }
 
