Reusable Server Kernel

Problem 34 (Major): Line Driver behaviour during data send

=============== 2000-02-04 13:05:53 (-05.00) ===============
 
Name:        ** Suppressed **
Company:     ** Suppressed **
Telephone:   ** Suppressed **
E-mail:      ** Suppressed **
 
Text:
 
I forgot to say that the fix is available in
/rsk/rskfix.vmarc, available on this web server.
=============== 2000-02-04 13:04:01 (-05.00) ===============
 
Name:        ** Suppressed **
Company:     ** Suppressed **
Telephone:   ** Suppressed **
E-mail:      ** Suppressed **
 
Text:
 
I found that the line driver was sending the "client lost"
message to the instance but that the instance was blocked
in ssClientDataPut because of the pacing semaphore.  The 
line driver needs to flush the client output queue as part
of its process of initiating teardown of the connection to
the client.  Such flushing will cause the instance to wake
up from the SemWait.
Be advised also that a tight loop on ssClientDataPut is
ill-advised.  You need to be checking the line driver
queue every once in a while to see if there is a message
from the line driver telling you that the client has gone
south.  QueueReceiveImmed could be used for this purpose.
=============== 1999-12-27 18:26:27 (-05.00) ===============
 
Name:        ** Suppressed **
Company:     ** Suppressed **
Telephone:   ** Suppressed **
E-mail:      ** Suppressed **
 
Text:
 
What happens inside the RSK when a client (in this case connected
to the TCP line driver) "goes away" while an RSK application
is sending the client data? The data is being sent in a (tight)
(ssClientDataPut, QueueSend) loop. From tracing inside the 
application, it appears the control is not returned from whichever
QueueSend is in progress when the client breaks the connection.
Is there any way the line driver could tell the application
that this situation has occured, in much the same way the
line driver notifies the application of a btroken connection
when QueueReceiveBlock is called?
TIA


[ Help | Summary | Previous | Next ]