select + record_recv

Sam Varshavchik mrsam at
Sat Jul 10 22:53:18 CEST 2010

Nikos Mavrogiannopoulos writes:

> In the early versions of GnuTLS I implemented a hack in order to use
> select() to check whether there are data to read from the gnutls
> session. Is this feature actually used? If you want to check for data in
> a gnutls_session how do you do it?

I always thought that the correct logic is:

1) Non-blocking sockets are a must.

2) Check what gnutls_record_check_pending() tells you, first.

23 If there's nothing pending, poll() or select(), and if it indicates that 
data is available, try gnutls_record_recv().

Now, if gnutls_record_recv() hands you back some data, you do have to 
consume it. However, this logic seems to work reliably for me, in 
event-driven situations.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: </pipermail/attachments/20100710/c74978d5/attachment.pgp>

More information about the Gnutls-devel mailing list