Commit 929598fd authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

secur32: Properly handle GNUTLS_E_AGAIN in (GnuTLS) schan_imp_recv().

parent 65aed972
......@@ -371,11 +371,23 @@ SECURITY_STATUS schan_imp_recv(schan_imp_session session, void *buffer,
SIZE_T *length)
{
gnutls_session_t s = (gnutls_session_t)session;
ssize_t ret = pgnutls_record_recv(s, buffer, *length);
ssize_t ret;
again:
ret = pgnutls_record_recv(s, buffer, *length);
if (ret >= 0)
*length = ret;
else if (ret == GNUTLS_E_AGAIN)
{
struct schan_transport *t = (struct schan_transport *)pgnutls_transport_get_ptr(s);
SIZE_T count = 0;
if (schan_get_buffer(t, &t->in, &count))
goto again;
return SEC_I_CONTINUE_NEEDED;
}
else
{
pgnutls_perror(ret);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment