On Thu, Jan 22, 2004 at 01:16:45PM -0800, Bill Barker wrote: > However, it is the correct value to pass to Tomcat. Tomcat correctly uses > this value for getLocalPort. The value of getServerPort (which is the one > used for redirection) is taken from the Host header (as required by the 2.4 > servlet spec).
Interesting. Because the problem we were having was that a redirect generated from within Tomcat didn't work. It would put :8000 on the FQ URL, which the client browser wouldn't be able to reach. That's the reason I wrote the patch (and my old company is using it in production). Perhaps there is a bug in the way redirect Locations are built? Is Tomcat using local port if there is no port on the Host? Because in the absence of a port, it should use the protocol default. > ----- Original Message ----- > From: "Kyle VanderBeek" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Thursday, January 22, 2004 12:25 PM > Subject: Re: [PATHCH] ./jk/native2/server/apache2/jk_service_apache2.c > > > On Thu, Jan 22, 2004 at 09:08:48PM +0100, Günter Knauf wrote: > > Hi Henri, > > > Thanks to resubmit the latest patch for jk/jk2 on Apache 2 to see if > > > everybody agree > > ok. > > With APR 1.0 apr_sockaddr_port_get() was removed without replacement. > > I believe that the patch below is the correct replacement to archive > _same_ behaviour as with apr_sockaddr_port_get() before, and I tested that > it also works with APR 0.9.x (Apache 2.0.48 tested): > > Please look at the bug 16901 again. This is the WRONG behavior. The > port that should be passed back to the tomcat layer isn't necessarily > the same as the port being listened on. For example, configuring Apache > httpd2 like this is perfectly legal: > > Listen 8000 > ... > ServerName www.example.com:80 > > This sort of thing is frequently used by people with server farms behind > load balancers. This way they can run several httpd's on the same > machine on different ports, group them, use NAT, all kinds of stuff. > > The point is: the port visible to the world is a configured value, not > one that should be inferred from the socket. Please look at the patch > on the bug again. It uses ap_get_server_port() to look up the > *configured* port of the server record. Note, this is "ap_" not "apr_". > The patch on the bug removes the dead "apr_" function you describe, but > replaces it with the correct way of looking up the server name and port: > by asking the httpd config functions. > > Please re-read the bug, and look at the UseCanonicalName doc mentioned > therein. > > > # patch for APR 1.0 compatiblity > > # > > --- jk_service_apache2.c.orig Tue Sep 30 18:16:14 2003 > > +++ jk_service_apache2.c Wed Jan 21 17:43:14 2004 > > @@ -343,7 +343,6 @@ > > static int JK_METHOD jk2_init_ws_service(jk_env_t *env, jk_ws_service_t > *s, > > jk_worker_t *worker, void > *serverObj) > > { > > - apr_port_t port; > > char *ssl_temp = NULL; > > jk_workerEnv_t *workerEnv; > > request_rec *r=serverObj; > > @@ -377,8 +376,7 @@ > > r->server->server_hostname); > > > > /* get the real port (otherwise redirect failed) */ > > - apr_sockaddr_port_get(&port,r->connection->local_addr); > > - s->server_port = port; > > + s->server_port = r->connection->local_addr->port; > > > > s->server_software = (char *)ap_get_server_version(); > > > > =================================================================== > > There's an outstanding patch in bugzilla: > > http://nagoya.apache.org/bugzilla/showattachment.cgi?attach_id=8969 > > > > --- jk/native2/server/apache2/jk_service_apache2.c 30 Sep 2003 > 13:42:02 -00001.36 > > +++ jk/native2/server/apache2/jk_service_apache2.c 7 Nov 2003 > 00:20:16 -0000 > > @@ -343,7 +343,6 @@ > > static int JK_METHOD jk2_init_ws_service(jk_env_t *env, jk_ws_service_t > *s, > > jk_worker_t *worker, void > *serverObj) > > { > > - apr_port_t port; > > char *ssl_temp = NULL; > > jk_workerEnv_t *workerEnv; > > request_rec *r=serverObj; > > @@ -373,12 +372,10 @@ > > s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip); > > > > /* get server name */ > > - s->server_name= (char *)(r->hostname ? r->hostname : > > - r->server->server_hostname); > > + s->server_name= (char *)ap_get_server_name(r); > > > > /* get the real port (otherwise redirect failed) */ > > - apr_sockaddr_port_get(&port,r->connection->local_addr); > > - s->server_port = port; > > + s->server_port = ap_get_server_port(r); > > > > s->server_software = (char *)ap_get_server_version(); > > > > with this patch I'm also fine since it uses an API which still exists in > APR 1.0 (just compiled with httpd-2.1-dev); but since I've no NAT setup for > testing the issue described in bugzilla I cant tell if the patch solves the > isssue, nor if it hurts something else.... > > but according to the 5 votes in bugzilla it seems to solve their problems, > so I tend to this patch now ... > > > > once it is decided what we use now, I will create the other patches for > mod_jk again... > > > > > > thanks, Guenter. > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > -- > [EMAIL PROTECTED] > Some people have a way with words, while others... erm... thingy. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > This message is intended only for the use of the person(s) listed above as the > intended recipient(s), and may contain information that is PRIVILEGED and > CONFIDENTIAL. If you are not an intended recipient, you may not read, copy, or > distribute this message or any attachment. If you received this communication in > error, please notify us immediately by e-mail and then delete all copies of this > message and any attachments. > > In addition you should be aware that ordinary (unencrypted) e-mail sent through the > Internet is not secure. Do not send confidential or sensitive information, such as > social security numbers, account numbers, personal identification numbers and > passwords, to us via ordinary (unencrypted) e-mail. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] -- [EMAIL PROTECTED] Some people have a way with words, while others... erm... thingy. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]