[gnutls-help] Regression bug between 2.x and 3.2?
nmav at gnutls.org
Tue Jun 17 11:06:44 CEST 2014
On Mon, Jun 16, 2014 at 7:38 PM, Lavrentiev, Anton (NIH/NLM/NCBI) [C]
<lavr at ncbi.nlm.nih.gov> wrote:
> Hello Nikos,
>> Does making that change address your issue?
> It's not that I cannot reissue gnutls_record_send() upon EAGAIN, it's that I can no longer distinguish
> two different write faults that I was able to, formerly: whether send() failed to complete because of
> the internal device timeout or just because send() was not able to write everything at once.
> So the outer code can no longer figure out what the problem has been (there could not have been any, actually).
> The push callback cannot set up any other errnos, because only EAGAIN/EINTR are treated specially, with
> all others being de-facto fatal.
I see. So for you it is mostly the issue that GNUTLS_E_AGAIN doesn't
always map to EAGAIN. My suggestions would be to communicate the
failure issue using the transport_ptr (e.g., by making it a
structure). Modifying gnutls to emulate the previous behavior I don't
think would help you either, as there are more cases where
GNUTLS_E_AGAIN doesn't directly map to EAGAIN errno.
More information about the Gnutls-help