From d13b124eaf452b267480074b2e6946538ed03a6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Thu, 10 Nov 2011 17:35:39 +0200 Subject: [PATCH] tls: Remove the nonblocking code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since the underlying URLContext read functions are used, they handle interruption, without having to handle it at this level. Signed-off-by: Martin Storsjö --- libavformat/tls.c | 35 +++++++++++------------------------ 1 file 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)