Bill Stoddard wrote:
> The create_connection hook has a fatal design flaw. create_conn is run before
> ap_update_vhost_given_ip(), which means that it is impossible to install input and 
>output
> filters based on vhost info.
> 
> I want to install SSL_IN and SSL_OUT filters if the request is coming in to a 
>vhost/port
> enabled for SSL and that can't be done with the create_connection hook.
> 
> Bill
> 

On that point.
I don't think there is any way of inserting a proxy specifc filter 
either, as their is now way for the hook to know what kind of request
is the connection is for.

> 
>>>One Nov. 12, Ryan committed a patch creating the create_conn hook. The
>>>idea was to move
>>>the client_socket out of the conn_rec presumably to make available
>>>
>>only to
>>
>>>the core_in and
>>>core_out filters.  However, I just found a backdoor...
>>>
>>>In core_create_conn() the socket is saved away thusly:
>>>ap_set_module_config(net->c->conn_config, &core_module, csd);
>>>
>>>And whoever needs to access the socket does this:
>>>apr_socket_t *csd = ap_get_module_config(f->c->conn_config,
>>>
>>&core_module);
>>
>>That hack was added because the proxy does the completely wrong thing
>>with regard to handing sockets.  In order to finish the Nov. 12 patch, I
>>need to rip a lot of logic out of the proxy and re-implement, which I
>>haven't had time to do recently.  The only other module that should use
>>the get_module_config hack is the perchild module, which is also doing
>>to completely wrong thing with regard to sockets, but I haven't had time
>>to fix that one either.
>>
>>
>>
>>>So the goal of hiding the socket is completely blown.  The Nov. 11
>>>
>>change
>>
>>>added a lot of
>>>complexity to the server (hard to read/understand code) in pursuit of
>>>
>>a
>>
>>>goal that is then
>>>immediately circumvented by the ap_get|set_module_config. So we made
>>>
>>the
>>
>>>server more
>>>complex for no reason.
>>>
>>It actually isn't blown.  Try writing a module that implements a non TCP
>>socket, and it will work as long as you don't use the proxy or the
>>perchild module.  As proof, look at the fact that the Unix MPMs have
>>been using that mechanism to handle the pipe_of_death.  This allowed me
>>to remove the ugly hacks at the beginning of the accept loop, which
>>checked for the POD.
>>
>>Also, a big portion of the Nov 12 patch was to consolidate the accept
>>functions for Unix and BeOS, which has meant far less duplicated code in
>>the server.
>>
>>
>>>I am on the verge of vetoing the Nov. 12 patch in favor of moving the
>>>client_socket back
>>>into the con_rec.
>>>
>>>Comments?
>>>
>>Please don't let two mis-behaved modules color your judgment on this.
>>Both proxy and perchild must be re-written if they are going to be
>>clean, and once that is done the stupid set_module_config can be
>>removed.  In fact, the server ran for over a day without the
>>set_module_config, but that broke the proxy, so I added the hack to
>>allow the proxy to continue to work, while I worked to solve the
>>underlying problem.  Unfortunately, work and some extracurricular
>>activities have stopped me from contributing much code recently.
>>Hopefully, I will have time to code again soon.
>>
>>Ryan
>>
>>
>>
> 
> 



Reply via email to