diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gnutls.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/gnutls.c b/src/gnutls.c index d1b34c5bf7f..988c0104869 100644 --- a/src/gnutls.c +++ b/src/gnutls.c | |||
| @@ -403,6 +403,9 @@ gnutls_try_handshake (struct Lisp_Process *proc) | |||
| 403 | gnutls_session_t state = proc->gnutls_state; | 403 | gnutls_session_t state = proc->gnutls_state; |
| 404 | int ret; | 404 | int ret; |
| 405 | 405 | ||
| 406 | if (proc->is_non_blocking_client) | ||
| 407 | proc->gnutls_p = true; | ||
| 408 | |||
| 406 | do | 409 | do |
| 407 | { | 410 | { |
| 408 | ret = gnutls_handshake (state); | 411 | ret = gnutls_handshake (state); |
| @@ -414,9 +417,6 @@ gnutls_try_handshake (struct Lisp_Process *proc) | |||
| 414 | 417 | ||
| 415 | proc->gnutls_initstage = GNUTLS_STAGE_HANDSHAKE_TRIED; | 418 | proc->gnutls_initstage = GNUTLS_STAGE_HANDSHAKE_TRIED; |
| 416 | 419 | ||
| 417 | if (proc->is_non_blocking_client) | ||
| 418 | proc->gnutls_p = true; | ||
| 419 | |||
| 420 | if (ret == GNUTLS_E_SUCCESS) | 420 | if (ret == GNUTLS_E_SUCCESS) |
| 421 | { | 421 | { |
| 422 | /* Here we're finally done. */ | 422 | /* Here we're finally done. */ |
| @@ -541,7 +541,10 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, ptrdiff_t nbyte) | |||
| 541 | gnutls_session_t state = proc->gnutls_state; | 541 | gnutls_session_t state = proc->gnutls_state; |
| 542 | 542 | ||
| 543 | if (proc->gnutls_initstage != GNUTLS_STAGE_READY) | 543 | if (proc->gnutls_initstage != GNUTLS_STAGE_READY) |
| 544 | return -1; | 544 | { |
| 545 | errno = EAGAIN; | ||
| 546 | return -1; | ||
| 547 | } | ||
| 545 | 548 | ||
| 546 | rtnval = gnutls_record_recv (state, buf, nbyte); | 549 | rtnval = gnutls_record_recv (state, buf, nbyte); |
| 547 | if (rtnval >= 0) | 550 | if (rtnval >= 0) |