[gnutls-help] DTLS and retransmission and reordering
Joke de Buhr
joke at seiken.de
Wed Apr 10 23:58:15 CEST 2013
thanks for the clarification.
On Wednesday 10 April 2013 23:31:18 you wrote:
> On 04/10/2013 11:10 PM, Joke de Buhr wrote:
> >> Your pull timeout function should return 0 on timeout, a positive number
> >> if data can be received and -1 on error. I'll make the documentation
> >> more clear on that, but in your case you should have returned zero
> >> instead of EAGAIN.
> > i see the point especially if i would use a traditional select based
> > approach while waiting for a timeout.
> > but let's assume:
> > the handshake timeout isn't set at all. my pull timeout function should
> > never block.
> Indeed. It should return 0 when it has no data because it is called with
> a parameter of 0 ms.
> > as a consequence the pull_timeout_function() will always get called with
> > an
> > timeout value of 0. should i return 0 or set gnutls EAGAIN value and
> > return -1 if no new data is available? i can't wait using select. the
> > function can't block. if data is available handshake() or receive() will
> > be called.
> The pull timeout function is set so gnutls can wait when needed. However
> in your case (you use non-blocking mode) it should be called with a
> parameter of 0 ms, so you should return 0 (timeout) when no data are
> there. That's similar to what select does.
> > now the handshake() will return a value of GNUTLS_EAGAIN and i use
> EAGAIN doesn't imply that no data are there. It merely says call me
> again sometime. That's why you see no action there.
More information about the Gnutls-help