From 9eef2b77b29189606148e1fdf5d6c8d7b52b08b0 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 14 Mar 2004 02:59:33 +0000 Subject: no read loop tcp/http and http CRLF fix by (Leon van Stuivenberg ) Originally committed as revision 2885 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/http.c | 42 ++++++++++++++++-------------------------- libavformat/tcp.c | 15 ++++----------- 2 files changed, 20 insertions(+), 37 deletions(-) (limited to 'libavformat') diff --git a/libavformat/http.c b/libavformat/http.c index e992865442..6ae9d72a8e 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -183,11 +183,11 @@ static int http_connect(URLContext *h, const char *path, const char *hoststr) post = h->flags & URL_WRONLY; snprintf(s->buffer, sizeof(s->buffer), - "%s %s HTTP/1.0\n" - "User-Agent: %s\n" - "Accept: */*\n" - "Host: %s\n" - "\n", + "%s %s HTTP/1.0\r\n" + "User-Agent: %s\r\n" + "Accept: */*\r\n" + "Host: %s\r\n" + "\r\n", post ? "POST" : "GET", path, LIBAVFORMAT_IDENT, @@ -238,29 +238,19 @@ static int http_connect(URLContext *h, const char *path, const char *hoststr) static int http_read(URLContext *h, uint8_t *buf, int size) { HTTPContext *s = h->priv_data; - int size1, len; + int len; - size1 = size; - while (size > 0) { - /* read bytes from input buffer first */ - len = s->buf_end - s->buf_ptr; - if (len > 0) { - if (len > size) - len = size; - memcpy(buf, s->buf_ptr, len); - s->buf_ptr += len; - } else { - len = url_read (s->hd, buf, size); - if (len < 0) { - return len; - } else if (len == 0) { - break; - } - } - size -= len; - buf += len; + /* read bytes from input buffer first */ + len = s->buf_end - s->buf_ptr; + if (len > 0) { + if (len > size) + len = size; + memcpy(buf, s->buf_ptr, len); + s->buf_ptr += len; + } else { + len = url_read(s->hd, buf, size); } - return size1 - size; + return len; } /* used only when posting data */ diff --git a/libavformat/tcp.c b/libavformat/tcp.c index 7638b95d92..b49e78ff24 100644 --- a/libavformat/tcp.c +++ b/libavformat/tcp.c @@ -141,12 +141,11 @@ static int tcp_open(URLContext *h, const char *uri, int flags) static int tcp_read(URLContext *h, uint8_t *buf, int size) { TCPContext *s = h->priv_data; - int size1, len, fd_max; + int len, fd_max; fd_set rfds; struct timeval tv; - size1 = size; - while (size > 0) { + for (;;) { if (url_interrupt_cb()) return -EINTR; fd_max = s->fd; @@ -167,15 +166,9 @@ static int tcp_read(URLContext *h, uint8_t *buf, int size) #else return -errno; #endif - else - continue; - } else if (len == 0) { - break; - } - size -= len; - buf += len; + } else break; } - return size1 - size; + return len; } static int tcp_write(URLContext *h, uint8_t *buf, int size) -- cgit v1.2.3