[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

lynx-dev Re: Bad DOS lynx binary (Was: Mmory problems in DOS.)

From: Gisle Vanem
Subject: lynx-dev Re: Bad DOS lynx binary (Was: Mmory problems in DOS.)
Date: Wed, 27 Oct 1999 21:31:32 +0100 (MET)

On Wed, 27 Oct 1999, Doug Kaufman wrote:

> I am not sure that the limit is really the conventional memory in
> DOS, but I can confirm that the binary stops downloading http files
> when incomplete. On my machine, it stops at about 160K. I found the
> same problem in a binary of dev.9 that I had compiled with SLang.
> Thus we see it with both SLang and PDCurses compiles. Both of these
> were compiled with WATT-32 2.0 dev.rel.6. Previous compiles with
> dev.rel.5 (patched) worked well. I recompiled dev.12 with the WATT-32
> 2.0 dev.rel.5 (patch1 + Gisle's patch of 26 Aug 1999 to close.c). It
> now seems to work for downloading via http. I don't see what caused
> the problem. Perhaps Gisle can look at this.

I think you are seeing the EPIPE bug in select(). 

The condition for EPIPE has changed. It's not set unless socket has left
established state (got FIN, ICMP unreachable etc.) AND no remaining data
in receive-buffer. A small patch for select.c and read_select():
  for udp:
    if ((socket->so_state & SS_CANTRCVMORE) &&
++      (sock_rbused(sk) == 0))
      _sock_debugf (NULL, ", EPIPE");
      return (-1);
  for tcp:
  if ((!tcp_tick(sk) || (socket->so_state & SS_CANTRCVMORE)) &&
++    (sock_rbused(sk) == 0))
    _sock_debugf (NULL,", EPIPE");
    return (-1);

BTW. A bug in dev.rel.6 was found by Andreas Fischer <address@hidden>:
static int tcp_write (tcp_Socket *s, BYTE *data, UINT len)
  if (s->state != tcp_StateESTAB)
     return (0);
  len = min (len, tcp_MaxTxBufSize - s->datalen);
                  was 's->maxrdatalen'

Gisle V.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]