tls: Remove the nonblocking code
authorMartin Storsjö <martin@martin.st>
Thu, 10 Nov 2011 15:35:39 +0000 (17:35 +0200)
committerMartin Storsjö <martin@martin.st>
Thu, 21 May 2015 21:05:01 +0000 (00:05 +0300)
Since the underlying URLContext read functions are used,
they handle interruption, without having to handle it at
this level.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/tls.c

index 42a1e30..053a5c0 100644 (file)
@@ -44,10 +44,9 @@ static ssize_t gnutls_url_pull(gnutls_transport_ptr_t transport,
     int ret = ffurl_read(h, buf, len);
     if (ret >= 0)
         return ret;
-    if (ret == AVERROR(EAGAIN))
-        errno = EAGAIN;
-    else
-        errno = EIO;
+    if (ret == AVERROR_EXIT)
+        return 0;
+    errno = EIO;
     return -1;
 }
 static ssize_t gnutls_url_push(gnutls_transport_ptr_t transport,
@@ -57,10 +56,9 @@ static ssize_t gnutls_url_push(gnutls_transport_ptr_t transport,
     int ret = ffurl_write(h, buf, len);
     if (ret >= 0)
         return ret;
-    if (ret == AVERROR(EAGAIN))
-        errno = EAGAIN;
-    else
-        errno = EIO;
+    if (ret == AVERROR_EXIT)
+        return 0;
+    errno = EIO;
     return -1;
 }
 #elif CONFIG_OPENSSL
@@ -97,8 +95,8 @@ static int url_bio_bread(BIO *b, char *buf, int len)
     if (ret >= 0)
         return ret;
     BIO_clear_retry_flags(b);
-    if (ret == AVERROR(EAGAIN))
-        BIO_set_retry_read(b);
+    if (ret == AVERROR_EXIT)
+        return 0;
     return -1;
 }
 
@@ -109,8 +107,8 @@ static int url_bio_bwrite(BIO *b, const char *buf, int len)
     if (ret >= 0)
         return ret;
     BIO_clear_retry_flags(b);
-    if (ret == AVERROR(EAGAIN))
-        BIO_set_retry_write(b);
+    if (ret == AVERROR_EXIT)
+        return 0;
     return -1;
 }
 
@@ -216,16 +214,7 @@ static int do_tls_poll(URLContext *h, int ret)
         return AVERROR(EIO);
     }
 #endif
-    if (h->flags & AVIO_FLAG_NONBLOCK)
-        return AVERROR(EAGAIN);
-    while (1) {
-        int n = poll(&p, 1, 100);
-        if (n > 0)
-            break;
-        if (ff_check_interrupt(&h->interrupt_callback))
-            return AVERROR(EINTR);
-    }
-    return 0;
+    return AVERROR(EIO);
 }
 
 static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **options)
@@ -314,7 +303,6 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
         }
     }
     gnutls_credentials_set(c->session, GNUTLS_CRD_CERTIFICATE, c->cred);
-    c->tcp->flags |= AVIO_FLAG_NONBLOCK;
     gnutls_transport_set_pull_function(c->session, gnutls_url_pull);
     gnutls_transport_set_push_function(c->session, gnutls_url_push);
     gnutls_transport_set_ptr(c->session, c->tcp);
@@ -390,7 +378,6 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
         goto fail;
     }
     bio = BIO_new(&url_bio_method);
-    c->tcp->flags |= AVIO_FLAG_NONBLOCK;
     bio->ptr = c->tcp;
     SSL_set_bio(c->ssl, bio, bio);
     if (!c->listen && !numerichost)