lynx-dev
[Top][All Lists]
Advanced

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

Re: lynx-dev Lynx problems - Error message delay


From: Klaus Weide
Subject: Re: lynx-dev Lynx problems - Error message delay
Date: Wed, 13 Jan 1999 21:32:40 -0600 (CST)

On Wed, 13 Jan 1999, Jacob Poon wrote:

> Version: Lynx 2.7.2 (Solaris/Sun)
> 
> Bugs
> ====
> 
> Error message delay
> -------------------
> 
> Problem:  Lynx's error messages delay feature sometimes interrupts the
> background process, resulting delay of service.

Lynx doesn't use "background processes" (in the normal sense of "process")
nor multiple threads.  (Exception: name lookup with NSL_FORK.)
It can only do one thing at a time.

> Examples:  
> 
> If I get a 404 error when I retrieve a page, I am forced to wait for
> several seconds before Lynx displays server's automatic response.  And I
> cannot bypass the delay at all.
> 
> Solutions:
> 
> First of all, setting the delays to zero will not solve my problem because
> I may still want to see Lynx reports the error.  But at the same time, I
> do not want Lynx stopping the background processes or interrupting
> transfers (in case 1, displaying server's automatic response on error 404)
> to slow down my browsing speed. 

There are no "background processes" to stop, in the normal Unix sence of
"process".  But yes, while Lynx is displaying the statusline message,
all other activity has to wait.  That's true even with your suggested
change.  Any attempt to make Lynx relly mutithreaded would be a huge
undertaking.

But while Lynx is pausing to display the statusline message, the transfer
of incoming data can continue in the background: the OS / TCP/IP stack
should take care of that, at least until buffers / TCP receive window
are filled.  So the system should still be accepting and acking data
while the message is shown, unless you have a very fast connection and/or
too small TCP receive windows.

> Therefore lynx.cfg settings, INFOSECS, MESSAGESECS, ALERTSECS, should be
> implemented in following manners (following is INFOSECS psuedo-code, but
> it should be trivial to replace it for MESSAGESECS and ALERTSECS designs):
> 
> showINFOSECS (int INFOSECS) {
>   showmsg(errno)
>   if INFOSECS < 0 then
>     loop
>       exit if a_key_is_pressed()
>     end loop
>   else
>     timer = 0
>     start_timer(timer)
>     loop
>       exit if timer > delay_time
>       if a_key_is_pressed() then exit loop
>     end loop
>     stop_timer(timer)
>   end if
>   erasemsg()
> }

If someone submits code instead of pseudo-code, it might get included :).

   Klaus

reply via email to

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