no read loop tcp/http and http CRLF fix by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)

Originally committed as revision 2885 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2004-03-14 02:59:33 +00:00
parent c3775e542f
commit 9eef2b77b2
2 changed files with 20 additions and 37 deletions

View File

@ -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 */

View File

@ -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)