gnutls_record_recv timeout with blocking sockets
nmav at gnutls.org
Mon May 23 21:21:25 CEST 2011
On 05/23/2011 07:41 PM, Giuseppe Scrivano wrote:
>>> In wget we are using something like the following pseudo-code to
>>> check if a call to `gnutls_record_recv' will be blocking:
>>> gnutls_record_check_pending (session) || select_fd (fd, timeout);
>>> I have noticed that even if the previous code returns a non-zero value,
>>> `gnutls_record_recv' can still block.
>> Could you distinguish which was the function that triggered the
>> recv, (i.e. gnutls_record_check_pending() or select_fd()?).
> Sorry that I haven't mentioned it before, `select_fd' triggers the read.
Then, as Sam mentioned, there is not much gnutls can do. That could
be either because of the bugs mentioned by Sam, or because gnutls is
blocked waiting for a TLS record. The ways to avoid this would be
either by using non-blocking sockets or by having a timeout in the
recv function provided to gnutls.
More information about the Gnutls-devel