diff mbox series

[FFmpeg-devel,v2,2/9] avformat/http: Use AVERROR_HTTP_TOO_MANY_REQUESTS

Message ID 20240422142547.281064-3-derek.buitenhuis@gmail.com
State New
Headers show
Series HTTP rate limiting and retry improvements | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Derek Buitenhuis April 22, 2024, 2:25 p.m. UTC
Added in thep previous commit.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
---
 libavformat/http.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Martin Storsjö April 24, 2024, 10:53 a.m. UTC | #1
On Mon, 22 Apr 2024, Derek Buitenhuis wrote:

> Added in thep previous commit.

Typo in the commit message

// Martin
Martin Storsjö April 24, 2024, 10:58 a.m. UTC | #2
On Mon, 22 Apr 2024, Derek Buitenhuis wrote:

> Added in thep previous commit.
>
> Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
> ---
> libavformat/http.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/libavformat/http.c b/libavformat/http.c
> index ed20359552..bbace2694f 100644
> --- a/libavformat/http.c
> +++ b/libavformat/http.c
> @@ -286,6 +286,7 @@ static int http_should_reconnect(HTTPContext *s, int err)
>     case AVERROR_HTTP_UNAUTHORIZED:
>     case AVERROR_HTTP_FORBIDDEN:
>     case AVERROR_HTTP_NOT_FOUND:
> +    case AVERROR_HTTP_TOO_MANY_REQUESTS:
>     case AVERROR_HTTP_OTHER_4XX:
>         status_group = "4xx";
>         break;
> @@ -522,6 +523,7 @@ int ff_http_averror(int status_code, int default_averror)
>         case 401: return AVERROR_HTTP_UNAUTHORIZED;
>         case 403: return AVERROR_HTTP_FORBIDDEN;
>         case 404: return AVERROR_HTTP_NOT_FOUND;
> +        case 429: return AVERROR_HTTP_TOO_MANY_REQUESTS;
>         default: break;
>     }
>     if (status_code >= 400 && status_code <= 499)
> @@ -558,6 +560,10 @@ static int http_write_reply(URLContext* h, int status_code)
>         reply_code = 404;
>         reply_text = "Not Found";
>         break;
> +    case 429:
> +        reply_code = 429;
> +        reply_text = "Too Many Requests";
> +        break;
>     case 200:

This function seems to handle both the literal status codes, like 429, and 
also AVERROR style error codes, as when called from handle_http_errors, so 
perhaps it would be good for consistency to add the AVERROR here too.

// Martin
Derek Buitenhuis April 24, 2024, 7:40 p.m. UTC | #3
On 4/24/2024 11:53 AM, Martin Storsjö wrote:
> Typo in the commit message

Fixed locally.

- Derek
Derek Buitenhuis April 24, 2024, 7:41 p.m. UTC | #4
On 4/24/2024 11:58 AM, Martin Storsjö wrote:
> This function seems to handle both the literal status codes, like 429, and 
> also AVERROR style error codes, as when called from handle_http_errors, so 
> perhaps it would be good for consistency to add the AVERROR here too.

Good catch. Added.

- Derek
diff mbox series

Patch

diff --git a/libavformat/http.c b/libavformat/http.c
index ed20359552..bbace2694f 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -286,6 +286,7 @@  static int http_should_reconnect(HTTPContext *s, int err)
     case AVERROR_HTTP_UNAUTHORIZED:
     case AVERROR_HTTP_FORBIDDEN:
     case AVERROR_HTTP_NOT_FOUND:
+    case AVERROR_HTTP_TOO_MANY_REQUESTS:
     case AVERROR_HTTP_OTHER_4XX:
         status_group = "4xx";
         break;
@@ -522,6 +523,7 @@  int ff_http_averror(int status_code, int default_averror)
         case 401: return AVERROR_HTTP_UNAUTHORIZED;
         case 403: return AVERROR_HTTP_FORBIDDEN;
         case 404: return AVERROR_HTTP_NOT_FOUND;
+        case 429: return AVERROR_HTTP_TOO_MANY_REQUESTS;
         default: break;
     }
     if (status_code >= 400 && status_code <= 499)
@@ -558,6 +560,10 @@  static int http_write_reply(URLContext* h, int status_code)
         reply_code = 404;
         reply_text = "Not Found";
         break;
+    case 429:
+        reply_code = 429;
+        reply_text = "Too Many Requests";
+        break;
     case 200:
         reply_code = 200;
         reply_text = "OK";