From 44d19212008ee48255f96d82df899e3413a982c2 Mon Sep 17 00:00:00 2001
From: Stephan Holljes <klaxa1337@googlemail.com>
Date: Fri, 5 Jun 2015 00:27:07 +0200
Subject: [PATCH] lavf/http: Add simple autodetection for client HTTP method,
 based on AVIO_FLAG_READ.

Signed-off-by: Stephan Holljes <klaxa1337@googlemail.com>
---
 libavformat/http.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/libavformat/http.c b/libavformat/http.c
index 1bf9166c275..2db2dea51ea 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -563,6 +563,7 @@ static int process_line(URLContext *h, char *line, int line_count,
                         int *new_location)
 {
     HTTPContext *s = h->priv_data;
+    const char *auto_method =  h->flags & AVIO_FLAG_READ ? "POST" : "GET";
     char *tag, *p, *end, *method, *resource, *version;
     int ret;
 
@@ -587,6 +588,14 @@ static int process_line(URLContext *h, char *line, int line_count,
                            s->method, method);
                     return ff_http_averror(400, AVERROR(EIO));
                 }
+            } else {
+                // use autodetected HTTP method to expect
+                av_log(h, AV_LOG_TRACE, "Autodetected %s HTTP method\n", auto_method);
+                if (av_strcasecmp(auto_method, method)) {
+                    av_log(h, AV_LOG_ERROR, "Received and autodetected HTTP method did not match "
+                           "(%s autodetected %s received)\n", auto_method, method);
+                    return ff_http_averror(400, AVERROR(EIO));
+                }
             }
 
             // HTTP resource
-- 
GitLab