提交 8cfaa76a 编写于 作者: S Stephan Holljes 提交者: Nicolas George

lavf/http: Rudimentary error handling for HTTP requests received from clients.

Signed-off-by: NStephan Holljes <klaxa1337@googlemail.com>
上级 bbcee92b
......@@ -299,6 +299,23 @@ int ff_http_averror(int status_code, int default_averror)
return default_averror;
}
static void handle_http_errors(URLContext *h, int error)
{
static const char bad_request[] = "HTTP/1.1 400 Bad Request\r\nContent-Type: text/plain\r\n\r\n400 Bad Request\r\n";
static const char internal_server_error[] = "HTTP/1.1 500 Internal server error\r\nContent-Type: text/plain\r\n\r\n500 Internal server error\r\n";
HTTPContext *s = h->priv_data;
if (h->is_connected) {
switch(error) {
case AVERROR_HTTP_BAD_REQUEST:
ffurl_write(s->hd, bad_request, strlen(bad_request));
break;
default:
av_log(h, AV_LOG_ERROR, "Unhandled HTTP error.\n");
ffurl_write(s->hd, internal_server_error, strlen(internal_server_error));
}
}
}
static int http_listen(URLContext *h, const char *uri, int flags,
AVDictionary **options) {
HTTPContext *s = h->priv_data;
......@@ -325,6 +342,7 @@ static int http_listen(URLContext *h, const char *uri, int flags,
return 0;
fail:
handle_http_errors(h, ret);
av_dict_free(&s->chained_options);
return ret;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册