Multisession blocking repair
The new socket blocking code for multisession failed to take into
account that socket activity outside of the main block could lead to a
deadlock situation. For example:
* Check status of request A -> not complete
* Check status of request B -> whatever
* Request A may now be complete, since checking the status of any request
affects all requests
* Return to blocking loop because we think there is pending data, but in
fact all data has already been pulled from the socket.
The solution is to make a sweep and check for changes in requests
without touching the socket after all of the socket-fiddling is done.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>