]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
http client: use similar protocol version as in original request for redirects, fixes...
authorJaroslav Kysela <perex@perex.cz>
Mon, 26 Oct 2015 11:21:18 +0000 (12:21 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 26 Oct 2015 11:21:18 +0000 (12:21 +0100)
src/http.h
src/httpc.c
src/input/mpegts/iptv/iptv_http.c

index e4ec13b49f208b93345aeb8e6b695f88c9657f11..74eb1b30ebf1f39a6c8350c4be2afaeddc9ccb8c 100644 (file)
@@ -276,6 +276,7 @@ struct http_client {
 
   int          hc_code;
   http_ver_t   hc_version;
+  http_ver_t   hc_redirv;
   http_cmd_t   hc_cmd;
 
   struct http_arg_list hc_args; /* header */
@@ -361,7 +362,7 @@ int http_client_send( http_client_t *hc, http_cmd_t cmd,
                       http_arg_list_t *header, void *body, size_t body_size );
 void http_client_basic_auth( http_client_t *hc, http_arg_list_t *h,
                              const char *user, const char *pass );
-int http_client_simple_reconnect ( http_client_t *hc, const url_t *u );
+int http_client_simple_reconnect ( http_client_t *hc, const url_t *u, http_ver_t ver );
 int http_client_simple( http_client_t *hc, const url_t *url);
 int http_client_clear_state( http_client_t *hc );
 int http_client_run( http_client_t *hc );
index f92b0af9b7817bbbdde1b03abb11ab0a08c442fd..72fcd931b43d0520a217b3f07c328e0f48d4fde8 100644 (file)
@@ -1142,7 +1142,7 @@ http_client_basic_args ( http_client_t *hc, http_arg_list_t *h, const url_t *url
 }
 
 int
-http_client_simple_reconnect ( http_client_t *hc, const url_t *u )
+http_client_simple_reconnect ( http_client_t *hc, const url_t *u, http_ver_t ver )
 {
   http_arg_list_t h;
   tvhpoll_t *efd;
@@ -1176,6 +1176,7 @@ http_client_simple_reconnect ( http_client_t *hc, const url_t *u )
   hc->hc_reconnected = 1;
   hc->hc_shutdown    = 0;
   hc->hc_pevents     = 0;
+  hc->hc_version     = ver;
 
   r = http_client_send(hc, hc->hc_cmd, u->path, u->query, &h, NULL, 0);
   if (r < 0)
@@ -1215,7 +1216,7 @@ http_client_redirected ( http_client_t *hc )
   }
   free(location);
 
-  r = http_client_simple_reconnect(hc, &u);
+  r = http_client_simple_reconnect(hc, &u, hc->hc_redirv);
 
   urlreset(&u);
   return r;
@@ -1339,6 +1340,7 @@ http_client_reconnect
   port           = http_port(hc, scheme, port);
   hc->hc_pevents = 0;
   hc->hc_version = ver;
+  hc->hc_redirv  = ver;
   hc->hc_scheme  = strdup(scheme);
   hc->hc_host    = strdup(host);
   hc->hc_port    = port;
index 8b6ae2a5695aaee91427e9b82d3d949ba90f9535..8149161e49fec463de733554e8540b74ac97ff54 100644 (file)
@@ -148,7 +148,7 @@ iptv_http_complete
     urlinit(&u);
     if (!urlparse(url, &u)) {
       hc->hc_keepalive = 0;
-      r = http_client_simple_reconnect(hc, &u);
+      r = http_client_simple_reconnect(hc, &u, HTTP_VERSION_1_1);
       if (r < 0)
         tvherror("iptv", "cannot reopen http client: %d'", r);
     } else {