mirror of https://github.com/aria2/aria2
gnutls: Don't fail handshake if returned error is not fatal
parent
3c789294b7
commit
e81dd84641
|
@ -181,11 +181,15 @@ int GnuTLSSession::tlsConnect(const std::string& hostname,
|
||||||
std::string& handshakeErr)
|
std::string& handshakeErr)
|
||||||
{
|
{
|
||||||
handshakeErr = "";
|
handshakeErr = "";
|
||||||
rv_ = gnutls_handshake(sslSession_);
|
for(;;) {
|
||||||
if(rv_ < 0) {
|
rv_ = gnutls_handshake(sslSession_);
|
||||||
|
if(rv_ == GNUTLS_E_SUCCESS) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(rv_ == GNUTLS_E_AGAIN || rv_ == GNUTLS_E_INTERRUPTED) {
|
if(rv_ == GNUTLS_E_AGAIN || rv_ == GNUTLS_E_INTERRUPTED) {
|
||||||
return TLS_ERR_WOULDBLOCK;
|
return TLS_ERR_WOULDBLOCK;
|
||||||
} else {
|
}
|
||||||
|
if(gnutls_error_is_fatal(rv_)) {
|
||||||
return TLS_ERR_ERROR;
|
return TLS_ERR_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -279,13 +283,17 @@ int GnuTLSSession::tlsConnect(const std::string& hostname,
|
||||||
|
|
||||||
int GnuTLSSession::tlsAccept()
|
int GnuTLSSession::tlsAccept()
|
||||||
{
|
{
|
||||||
rv_ = gnutls_handshake(sslSession_);
|
for(;;) {
|
||||||
if(rv_ == GNUTLS_E_SUCCESS) {
|
rv_ = gnutls_handshake(sslSession_);
|
||||||
return TLS_ERR_OK;
|
if(rv_ == GNUTLS_E_SUCCESS) {
|
||||||
} else if(rv_ == GNUTLS_E_AGAIN || rv_ == GNUTLS_E_INTERRUPTED) {
|
return TLS_ERR_OK;
|
||||||
return TLS_ERR_WOULDBLOCK;
|
}
|
||||||
} else {
|
if(rv_ == GNUTLS_E_AGAIN || rv_ == GNUTLS_E_INTERRUPTED) {
|
||||||
return TLS_ERR_ERROR;
|
return TLS_ERR_WOULDBLOCK;
|
||||||
|
}
|
||||||
|
if(gnutls_error_is_fatal(rv_)) {
|
||||||
|
return TLS_ERR_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue