secur32: Translate errors from push/pull callbacks.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51192 Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
fa5759b9ef
commit
cae161389b
|
@ -759,9 +759,8 @@ static char * CDECL schan_get_buffer(const struct schan_transport *t, struct sch
|
|||
* *buff_len > 0 indicates that some data was read. May be less than
|
||||
* what was requested, in which case the caller should call again if/
|
||||
* when they want more.
|
||||
* EAGAIN when no data could be read without blocking
|
||||
* -1 when no data could be read without blocking
|
||||
* another errno-style error value on failure
|
||||
*
|
||||
*/
|
||||
static int CDECL schan_pull(struct schan_transport *t, void *buff, size_t *buff_len)
|
||||
{
|
||||
|
@ -774,7 +773,7 @@ static int CDECL schan_pull(struct schan_transport *t, void *buff, size_t *buff_
|
|||
|
||||
b = schan_get_buffer(t, &t->in, &local_len);
|
||||
if (!b)
|
||||
return EAGAIN;
|
||||
return -1;
|
||||
|
||||
memcpy(buff, b, local_len);
|
||||
t->in.offset += local_len;
|
||||
|
@ -797,10 +796,9 @@ static int CDECL schan_pull(struct schan_transport *t, void *buff, size_t *buff_
|
|||
* 0 on success
|
||||
* *buff_len will be > 0 indicating how much data was written. May be less
|
||||
* than what was requested, in which case the caller should call again
|
||||
if/when they want to write more.
|
||||
* EAGAIN when no data could be written without blocking
|
||||
* if/when they want to write more.
|
||||
* -1 when no data could be written without blocking
|
||||
* another errno-style error value on failure
|
||||
*
|
||||
*/
|
||||
static int CDECL schan_push(struct schan_transport *t, const void *buff, size_t *buff_len)
|
||||
{
|
||||
|
@ -813,7 +811,7 @@ static int CDECL schan_push(struct schan_transport *t, const void *buff, size_t
|
|||
|
||||
b = schan_get_buffer(t, &t->out, &local_len);
|
||||
if (!b)
|
||||
return EAGAIN;
|
||||
return -1;
|
||||
|
||||
memcpy(b, buff, local_len);
|
||||
t->out.offset += local_len;
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#ifdef SONAME_LIBGNUTLS
|
||||
#include <gnutls/gnutls.h>
|
||||
#include <gnutls/crypto.h>
|
||||
|
@ -204,9 +205,14 @@ static ssize_t pull_adapter(gnutls_transport_ptr_t transport, void *buff, size_t
|
|||
gnutls_session_t s = (gnutls_session_t)callbacks->get_session_for_transport(t);
|
||||
|
||||
int ret = callbacks->pull(transport, buff, &buff_len);
|
||||
if (ret)
|
||||
if (ret == -1)
|
||||
{
|
||||
pgnutls_transport_set_errno(s, ret);
|
||||
pgnutls_transport_set_errno(s, EAGAIN);
|
||||
return -1;
|
||||
}
|
||||
if (ret < 0)
|
||||
{
|
||||
FIXME("unhandled error from pull callback %d\n", ret);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -219,9 +225,14 @@ static ssize_t push_adapter(gnutls_transport_ptr_t transport, const void *buff,
|
|||
gnutls_session_t s = (gnutls_session_t)callbacks->get_session_for_transport(t);
|
||||
|
||||
int ret = callbacks->push(transport, buff, &buff_len);
|
||||
if (ret)
|
||||
if (ret == -1)
|
||||
{
|
||||
pgnutls_transport_set_errno(s, ret);
|
||||
pgnutls_transport_set_errno(s, EAGAIN);
|
||||
return -1;
|
||||
}
|
||||
if (ret < 0)
|
||||
{
|
||||
FIXME("unhandled error from push callback %d\n", ret);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -672,7 +672,7 @@ static OSStatus pull_adapter(SSLConnectionRef transport, void *buff, SIZE_T *buf
|
|||
ret = noErr;
|
||||
}
|
||||
}
|
||||
else if (status == EAGAIN)
|
||||
else if (status == -1)
|
||||
{
|
||||
TRACE("Would block before being able to pull anything\n");
|
||||
ret = errSSLWouldBlock;
|
||||
|
@ -723,7 +723,7 @@ static OSStatus push_adapter(SSLConnectionRef transport, const void *buff, SIZE_
|
|||
TRACE("Pushed %lu bytes\n", *buff_len);
|
||||
ret = noErr;
|
||||
}
|
||||
else if (status == EAGAIN)
|
||||
else if (status == -1)
|
||||
{
|
||||
TRACE("Would block before being able to push anything\n");
|
||||
ret = errSSLWouldBlock;
|
||||
|
|
Loading…
Reference in New Issue