You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Randy Terbush <ra...@zyzzyva.com> on 1997/01/15 22:41:05 UTC

Re: lingering_close() one problem solved?

As you hopefully saw in followup mail, this was a false alarm.
However, it did seem to reduce the errors significantly.

Added some debug code....

I'm printing the fd# being closed in timeout(), the fd# being
shutdown() in lingering_close, and the fd# where lingering_close()
is being called in child_main(). The file descriptor number is
*always* 157.

[Wed Jan 15 15:25:25 1997] timeout: bclosing[157]
[Wed Jan 15 15:25:25 1997] timeout: should be[157]
[Wed Jan 15 15:25:43 1997] timeout: bclosing[157]
[Wed Jan 15 15:25:43 1997] timeout: should be[157]
[Wed Jan 15 15:25:45 1997] timeout: bclosing[157]
[Wed Jan 15 15:25:45 1997] timeout: should be[157]
[Wed Jan 15 15:26:06 1997] timeout: bclosing[157]
[Wed Jan 15 15:26:06 1997] timeout: should be[157]
[Wed Jan 15 15:26:25 1997] timeout: bclosing[157]
[Wed Jan 15 15:26:25 1997] timeout: should be[157]
[Wed Jan 15 15:26:32 1997] timeout: bclosing[157]
[Wed Jan 15 15:26:32 1997] timeout: should be[157]
[Wed Jan 15 15:26:32 1997] timeout: bclosing[157]
[Wed Jan 15 15:26:32 1997] timeout: should be[157]
[Wed Jan 15 15:26:35 1997] timeout: bclosing[157]
[Wed Jan 15 15:26:35 1997] timeout: should be[157]
[Wed Jan 15 15:27:10 1997] timeout: bclosing[157]
[Wed Jan 15 15:27:10 1997] timeout: should be[157]
[Wed Jan 15 15:27:24 1997] timeout: bclosing[157]
[Wed Jan 15 15:27:24 1997] timeout: should be[157]
[Wed Jan 15 15:27:24 1997] timeout: bclosing[157]
[Wed Jan 15 15:27:24 1997] timeout: should be[157]
[Wed Jan 15 15:27:24 1997] timeout: bclosing[157]
[Wed Jan 15 15:27:24 1997] timeout: should be[157]
[Wed Jan 15 15:27:27 1997] timeout: bclosing[157]

[Wed Jan 15 15:31:10 1997] send lost connection to client pc-052.dordt.edu
[Wed Jan 15 15:31:10 1997] shutdown sd[157]
[Wed Jan 15 15:31:10 1997] shutdown: Invalid argument
[Wed Jan 15 15:31:10 1997] - lingering_close

Also, the warnings above indicate that shutdown is being called
with a valid? file descriptor, yet it returns an error.
It also appears that far and away the majority of clients
that are triggering the lingering_close() are Win16 machines.


> On Wed, 15 Jan 1997, Randy Terbush wrote:
> 
> > I've been running the following change for nearly 2 hours now
> > and have not noticed any problems. In fact, I have not logged
> > a single 'shutdown: Invalid argument OR lingering_close'
> > since applying the change. 
> 
> Interesting. Does the "kill_timeout" need to be applied inside
> the #ifdef NO_LINGCLOSE block too (with an if (r) )  ?
> 
> > RCS file: /export/home/cvs/apache/src/http_main.c,v
> > retrieving revision 1.105
> > diff -c -r1.105 http_main.c
> > *** http_main.c 1997/01/10 18:47:36     1.105
> > --- http_main.c 1997/01/15 07:20:14
> > ***************
> > *** 1669,1676 ****
> >   #ifdef NO_LINGCLOSE
> >         bclose(conn_io);        /* just close it */
> >   #else
> > !       if (r)
> >             lingering_close (conn_io->fd, r->server);
> >         else
> >             close (conn_io->fd);
> >   #endif
> > --- 1669,1678 ----
> >   #ifdef NO_LINGCLOSE
> >         bclose(conn_io);        /* just close it */
> >   #else
> > !       if (r) {
> > !               kill_timeout(r);
> >             lingering_close (conn_io->fd, r->server);
> > +       }
> >         else
> >             close (conn_io->fd);
> >   #endif
>