mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-26 11:29:53 +03:00
Compare commits
2 Commits
3b8c36e6e3
...
e4e023e6fb
Author | SHA1 | Date | |
---|---|---|---|
|
e4e023e6fb | ||
|
82a1d5eef3 |
@ -12288,11 +12288,6 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
|
|||||||
ret = SSL_peek(ssl, &c, sizeof(c));
|
ret = SSL_peek(ssl, &c, sizeof(c));
|
||||||
}
|
}
|
||||||
Unlock(sock->ssl_lock);
|
Unlock(sock->ssl_lock);
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
|
||||||
// 2021/09/10: After OpenSSL 3.x.x, both 0 and negative values might mean retryable.
|
|
||||||
// See: https://github.com/openssl/openssl/blob/435981cbadad2c58c35bacd30ca5d8b4c9bea72f/doc/man3/SSL_read.pod
|
|
||||||
// > Old documentation indicated a difference between 0 and -1, and that -1 was retryable.
|
|
||||||
// > You should instead call SSL_get_error() to find out if it's retryable.
|
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
// The communication have been disconnected
|
// The communication have been disconnected
|
||||||
@ -12300,8 +12295,7 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
|
|||||||
Debug("%s %u SecureRecv() Disconnect\n", __FILE__, __LINE__);
|
Debug("%s %u SecureRecv() Disconnect\n", __FILE__, __LINE__);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
if (ret < 0)
|
||||||
if (ret <= 0)
|
|
||||||
{
|
{
|
||||||
// An error has occurred
|
// An error has occurred
|
||||||
e = SSL_get_error(ssl, ret);
|
e = SSL_get_error(ssl, ret);
|
||||||
@ -12316,9 +12310,7 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
|
|||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINT ssl_err_no = ERR_get_error();
|
Debug("%s %u SSL Fatal Error on ASYNC socket !!!\n", __FILE__, __LINE__);
|
||||||
|
|
||||||
Debug("%s %u SSL_ERROR_SSL on ASYNC socket !!! ssl_err_no = %u: '%s'\n", __FILE__, __LINE__, ssl_err_no, ERR_error_string(ssl_err_no, NULL));
|
|
||||||
Disconnect(sock);
|
Disconnect(sock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -12365,11 +12357,7 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
|
|||||||
}
|
}
|
||||||
#endif // OS_UNIX
|
#endif // OS_UNIX
|
||||||
|
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
if (ret < 0)
|
||||||
if (ret < 0) // OpenSSL version < 3.0.0
|
|
||||||
#else
|
|
||||||
if (ret <= 0) // OpenSSL version >= 3.0.0
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
e = SSL_get_error(ssl, ret);
|
e = SSL_get_error(ssl, ret);
|
||||||
}
|
}
|
||||||
@ -12392,12 +12380,6 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
|
|||||||
|
|
||||||
return (UINT)ret;
|
return (UINT)ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
|
||||||
// 2021/09/10: After OpenSSL 3.x.x, both 0 and negative values might mean retryable.
|
|
||||||
// See: https://github.com/openssl/openssl/blob/435981cbadad2c58c35bacd30ca5d8b4c9bea72f/doc/man3/SSL_read.pod
|
|
||||||
// > Old documentation indicated a difference between 0 and -1, and that -1 was retryable.
|
|
||||||
// > You should instead call SSL_get_error() to find out if it's retryable.
|
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
// Disconnect the communication
|
// Disconnect the communication
|
||||||
@ -12405,8 +12387,6 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
|
|||||||
//Debug("%s %u SecureRecv() Disconnect\n", __FILE__, __LINE__);
|
//Debug("%s %u SecureRecv() Disconnect\n", __FILE__, __LINE__);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (sock->AsyncMode)
|
if (sock->AsyncMode)
|
||||||
{
|
{
|
||||||
if (e == SSL_ERROR_WANT_READ || e == SSL_ERROR_WANT_WRITE || e == SSL_ERROR_SSL)
|
if (e == SSL_ERROR_WANT_READ || e == SSL_ERROR_WANT_WRITE || e == SSL_ERROR_SSL)
|
||||||
@ -12420,9 +12400,7 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
|
|||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINT ssl_err_no = ERR_get_error();
|
Debug("%s %u SSL Fatal Error on ASYNC socket !!!\n", __FILE__, __LINE__);
|
||||||
|
|
||||||
Debug("%s %u SSL_ERROR_SSL on ASYNC socket !!! ssl_err_no = %u: '%s'\n", __FILE__, __LINE__, ssl_err_no, ERR_error_string(ssl_err_no, NULL));
|
|
||||||
Disconnect(sock);
|
Disconnect(sock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -12460,11 +12438,7 @@ UINT SecureSend(SOCK *sock, void *data, UINT size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret = SSL_write(ssl, data, size);
|
ret = SSL_write(ssl, data, size);
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
if (ret < 0)
|
||||||
if (ret < 0) // OpenSSL version < 3.0.0
|
|
||||||
#else
|
|
||||||
if (ret <= 0) // OpenSSL version >= 3.0.0
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
e = SSL_get_error(ssl, ret);
|
e = SSL_get_error(ssl, ret);
|
||||||
}
|
}
|
||||||
@ -12486,8 +12460,6 @@ UINT SecureSend(SOCK *sock, void *data, UINT size)
|
|||||||
sock->WriteBlocked = false;
|
sock->WriteBlocked = false;
|
||||||
return (UINT)ret;
|
return (UINT)ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPENSSL_VERSION_NUMBER < 0x30000000L
|
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
// Disconnect
|
// Disconnect
|
||||||
@ -12495,7 +12467,6 @@ UINT SecureSend(SOCK *sock, void *data, UINT size)
|
|||||||
Disconnect(sock);
|
Disconnect(sock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (sock->AsyncMode)
|
if (sock->AsyncMode)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user