summaryrefslogtreecommitdiff
path: root/libavformat/tls_gnutls.c
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2019-03-27 13:03:07 +0100
committerJan Ekström <jeebjp@gmail.com>2019-06-14 21:19:41 +0300
commitbc1749c6e46099ec85110361dbe6f7994a63040d (patch)
tree0c161f66de33674d0b6ecff2ca7242a808c3c2db /libavformat/tls_gnutls.c
parentc9c1711f49616e1c60e0828174a300bf90c07b60 (diff)
downloadffmpeg-bc1749c6e46099ec85110361dbe6f7994a63040d.tar.gz
lavf/tls_gnutls: retry gnutls_handshake on non fatal errors
fixes #7801 Signed-off-by: Remita Amine <remitamine@gmail.com>
Diffstat (limited to 'libavformat/tls_gnutls.c')
-rw-r--r--libavformat/tls_gnutls.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/libavformat/tls_gnutls.c b/libavformat/tls_gnutls.c
index e3c43683be..f32bc2821b 100644
--- a/libavformat/tls_gnutls.c
+++ b/libavformat/tls_gnutls.c
@@ -182,11 +182,13 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
gnutls_transport_set_push_function(p->session, gnutls_url_push);
gnutls_transport_set_ptr(p->session, c->tcp);
gnutls_priority_set_direct(p->session, "NORMAL", NULL);
- ret = gnutls_handshake(p->session);
- if (ret) {
- ret = print_tls_error(h, ret);
- goto fail;
- }
+ do {
+ ret = gnutls_handshake(p->session);
+ if (gnutls_error_is_fatal(ret)) {
+ ret = print_tls_error(h, ret);
+ goto fail;
+ }
+ } while (ret);
p->need_shutdown = 1;
if (c->verify) {
unsigned int status, cert_list_size;