diff options
author | Martin Storsjö <martin@martin.st> | 2011-11-10 19:35:39 +0400 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2015-05-22 00:05:01 +0300 |
commit | d13b124eaf452b267480074b2e6946538ed03a6e (patch) | |
tree | efc0ecbef743b67aee5e63a0b08d9c24c7e5fe70 /libavformat | |
parent | d15eec4d6bdfa3bd4c4b5b7dd2dbd699ba253d02 (diff) |
tls: Remove the nonblocking code
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>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/tls.c | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/libavformat/tls.c b/libavformat/tls.c index 42a1e303a6..053a5c0c5b 100644 --- a/libavformat/tls.c +++ b/libavformat/tls.c @@ -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) |