Handle GNUTLS_E_AGAIN in emacs_gnutls_read (Bug#34341)
Don't merge to master, this has already been fixed there by 2019-01-15 "Fix unlikely races with GnuTLS, datagrams". * src/gnutls.c (emacs_gnutls_read): Similar to emacs_gnutls_write, when gnutls_record_recv returns GNUTLS_E_AGAIN set errno to EGAIN.
This commit is contained in:
parent
02bee7860f
commit
202ff53da2
1 changed files with 9 additions and 2 deletions
11
src/gnutls.c
11
src/gnutls.c
|
@ -753,8 +753,15 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, ptrdiff_t nbyte)
|
|||
/* The peer closed the connection. */
|
||||
return 0;
|
||||
else if (emacs_gnutls_handle_error (state, rtnval))
|
||||
/* non-fatal error */
|
||||
return -1;
|
||||
{
|
||||
/* If we get GNUTLS_E_AGAIN, then set errno appropriately so that
|
||||
wait_reading_process_output retries the correct way instead of
|
||||
erroring out. */
|
||||
if (rtnval == GNUTLS_E_AGAIN)
|
||||
errno = EAGAIN;
|
||||
/* non-fatal error */
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
/* a fatal error occurred */
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue