Merge commit '55a215ba63d9fa79cd7ee265ee2e777ee86b200c'

* commit '55a215ba63d9fa79cd7ee265ee2e777ee86b200c':
  http: Return meaningful error codes

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-03-12 02:33:27 +01:00
commit 03fd80dcb1

View File

@ -287,7 +287,7 @@ static int http_getc(HTTPContext *s)
if (len < 0) { if (len < 0) {
return len; return len;
} else if (len == 0) { } else if (len == 0) {
return -1; return AVERROR_EOF;
} else { } else {
s->buf_ptr = s->buffer; s->buf_ptr = s->buffer;
s->buf_end = s->buffer + len; s->buf_end = s->buffer + len;
@ -350,7 +350,7 @@ static int process_line(URLContext *h, char *line, int line_count,
end += strspn(end, SPACE_CHARS); end += strspn(end, SPACE_CHARS);
av_log(h, AV_LOG_WARNING, "HTTP error %d %s\n", av_log(h, AV_LOG_WARNING, "HTTP error %d %s\n",
s->http_code, end); s->http_code, end);
return -1; return AVERROR(EIO);
} }
} else { } else {
while (*p != '\0' && *p != ':') while (*p != '\0' && *p != ':')
@ -969,7 +969,7 @@ static int64_t http_seek(URLContext *h, int64_t off, int whence)
URLContext *old_hd = s->hd; URLContext *old_hd = s->hd;
int64_t old_off = s->off; int64_t old_off = s->off;
uint8_t old_buf[BUFFER_SIZE]; uint8_t old_buf[BUFFER_SIZE];
int old_buf_size; int old_buf_size, ret;
AVDictionary *options = NULL; AVDictionary *options = NULL;
if (whence == AVSEEK_SIZE) if (whence == AVSEEK_SIZE)
@ -977,7 +977,7 @@ static int64_t http_seek(URLContext *h, int64_t off, int whence)
else if ((whence == SEEK_CUR && off == 0) || (whence == SEEK_SET && off == s->off)) else if ((whence == SEEK_CUR && off == 0) || (whence == SEEK_SET && off == s->off))
return s->off; return s->off;
else if ((s->filesize == -1 && whence == SEEK_END) || h->is_streamed) else if ((s->filesize == -1 && whence == SEEK_END) || h->is_streamed)
return -1; return AVERROR(ENOSYS);
if (whence == SEEK_CUR) if (whence == SEEK_CUR)
off += s->off; off += s->off;
@ -996,14 +996,14 @@ static int64_t http_seek(URLContext *h, int64_t off, int whence)
/* if it fails, continue on old connection */ /* if it fails, continue on old connection */
av_dict_copy(&options, s->chained_options, 0); av_dict_copy(&options, s->chained_options, 0);
if (http_open_cnx(h, &options) < 0) { if ((ret = http_open_cnx(h, &options)) < 0) {
av_dict_free(&options); av_dict_free(&options);
memcpy(s->buffer, old_buf, old_buf_size); memcpy(s->buffer, old_buf, old_buf_size);
s->buf_ptr = s->buffer; s->buf_ptr = s->buffer;
s->buf_end = s->buffer + old_buf_size; s->buf_end = s->buffer + old_buf_size;
s->hd = old_hd; s->hd = old_hd;
s->off = old_off; s->off = old_off;
return -1; return ret;
} }
av_dict_free(&options); av_dict_free(&options);
ffurl_close(old_hd); ffurl_close(old_hd);