The following reply was made to PR mod_jserv/4340; it has been noted by GNATS.
From: [EMAIL PROTECTED] (Andrew Fullford) To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED], java-apache@list.working-dogs.com Subject: Re: mod_jserv/4340: socket connection to jserv should be bound to host address Date: Fri, 21 May 1999 18:19:14 -0500 (CDT) Jon, I finally got a chance to examine this further. I believe the problem is that "addr" here is specifying both the IP and the port, but we actually must only specify the IP address, as the port is guaranteed to be in use (by the JServ listener). So, instead of: ret=bind(sock,(struct sockaddr *)&addr,sizeof(struct sockaddr_in)); We really need something more like: { struct sockaddr_in local = addr; local.sin_port = htons(0); ret=bind(sock,(struct sockaddr *)&local,sizeof(struct sockaddr_in)); if (ret==-1) { . . . } } I'd supply some actual diffs here, but it turns out there is a further complication. As written, org.apache.jserv.JServ doesn't appear to have any way to listen on other than INADDR_ANY (aka 0.0.0.0). This means that you can't currently run more than one JServ on the same port but a different virtual interfaces. So this gets to be much more like an enhancement than a bug fix. As far as I can see, we'd need to: - add a new property (say "host") so the listen address can be specified. - change AuthenticatedServerSocket.java to use the 3 arg version of ServerSocket() if this property is specified, otherwise the current 2 arg version. As the whole point of the jserv_ajpv11.c change is to allow operation on specific addresses when a host runs multiple interfaces, the java changes would have to happen as well. I'm not sure what priority you guys place on this or if anyone else has run into this kind of thing. Certainly it would make my life easier but I can achieve nearly the same thing by allocating separate ports for each JServ running on a virtual interface. I'm happy to help out but my java abilities are a good deal worse than my C abilities! Andy -- Andrew Fullford Email: [EMAIL PROTECTED] August Associates Web: www.august.net > Date: Mon, 10 May 1999 19:46:13 -0700 > Subject: Re: mod_jserv/4340: socket connection to jserv should be bound to > host address > From: "jon *" <[EMAIL PROTECTED]> > To: [EMAIL PROTECTED] > CC: [EMAIL PROTECTED], java-apache@list.working-dogs.com > > > ret=bind(sock,(struct sockaddr *)&addr,sizeof(struct sockaddr_in)); > > Hello, > > I have tried adding that line and everything stopped working...the diff of > the code change that I attempted is below. I do see the cannot bind to host > error in my mod_jserv.log file. > > I really am not experienced with networking code in C so I'm not sure what > is going wrong, I'm just trying to see if I can close this bug report. > > Any better ideas? > > -jon > > Index: jserv_ajpv11.c > =================================================================== > RCS file: /products/cvs/master/jserv/src/c/jserv_ajpv11.c,v > retrieving revision 1.24 > diff -r1.24 jserv_ajpv11.c > 101a102,110 > > ret=bind(sock,(struct sockaddr *)&addr,sizeof(struct sockaddr_in)); > > if (ret==-1) { > > jserv_error(JSERV_LOG_EMERG,cfg,"ajp11: %s %s:%d", > > "can not bind to host", > > inet_ntoa(addr.sin_addr), > > port); > > return -1; > > } > > >