[vlc-commits] stream_filter: dash: add User-Agent

Francois Cartegnie git at videolan.org
Thu Dec 18 22:39:48 CET 2014


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Thu Nov 20 18:13:23 2014 +0100| [27915e893b34095ddfdb1572bf907c3e4c40b3c4] | committer: Francois Cartegnie

stream_filter: dash: add User-Agent

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=27915e893b34095ddfdb1572bf907c3e4c40b3c4
---

 modules/stream_filter/Makefile.am                  |    1 +
 modules/stream_filter/dash/dash.cpp                |   12 ++++-----
 modules/stream_filter/dash/dash.hpp                |   28 ++++++++++++++++++++
 .../stream_filter/dash/http/IHTTPConnection.cpp    |    4 ++-
 4 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/modules/stream_filter/Makefile.am b/modules/stream_filter/Makefile.am
index b0a8aaa..3c002d1 100644
--- a/modules/stream_filter/Makefile.am
+++ b/modules/stream_filter/Makefile.am
@@ -89,6 +89,7 @@ libdash_plugin_la_SOURCES = \
     stream_filter/dash/xml/Node.cpp \
     stream_filter/dash/xml/Node.h \
     stream_filter/dash/dash.cpp \
+    stream_filter/dash/dash.hpp \
     stream_filter/dash/DASHDownloader.cpp \
     stream_filter/dash/DASHDownloader.h \
     stream_filter/dash/DASHManager.cpp \
diff --git a/modules/stream_filter/dash/dash.cpp b/modules/stream_filter/dash/dash.cpp
index 697da2d..2c54a00 100644
--- a/modules/stream_filter/dash/dash.cpp
+++ b/modules/stream_filter/dash/dash.cpp
@@ -38,7 +38,7 @@
 
 #include <errno.h>
 
-#include "DASHManager.h"
+#include "dash.hpp"
 #include "xml/DOMParser.h"
 #include "mpd/MPDFactory.h"
 
@@ -74,12 +74,6 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct stream_sys_t
-{
-        dash::DASHManager   *p_dashManager;
-        dash::mpd::MPD      *p_mpd;
-        uint64_t                            position;
-};
 
 static int  Read            (stream_t *p_stream, void *p_ptr, unsigned int i_len);
 static int  Peek            (stream_t *p_stream, const uint8_t **pp_peek, unsigned int i_peek);
@@ -113,6 +107,8 @@ static int Open(vlc_object_t *p_obj)
     if (unlikely(p_sys == NULL))
         return VLC_ENOMEM;
 
+    p_sys->psz_useragent = var_InheritString(p_stream, "http-user-agent");
+
     p_sys->p_mpd = mpd;
     dash::DASHManager*p_dashManager = new dash::DASHManager(p_sys->p_mpd,
                                           dash::logic::IAdaptationLogic::RateBased,
@@ -122,6 +118,7 @@ static int Open(vlc_object_t *p_obj)
     {
         delete p_dashManager;
         free( p_sys );
+        free( p_sys->psz_useragent );
         return VLC_EGENERIC;
     }
     p_sys->p_dashManager    = p_dashManager;
@@ -145,6 +142,7 @@ static void Close(vlc_object_t *p_obj)
     dash::DASHManager                   *p_dashManager  = p_sys->p_dashManager;
 
     delete(p_dashManager);
+    free(p_sys->psz_useragent);
     free(p_sys);
 }
 /*****************************************************************************
diff --git a/modules/stream_filter/dash/dash.hpp b/modules/stream_filter/dash/dash.hpp
new file mode 100644
index 0000000..2c1140f
--- /dev/null
+++ b/modules/stream_filter/dash/dash.hpp
@@ -0,0 +1,28 @@
+/*****************************************************************************
+ * dash.hpp: DASH module
+ *****************************************************************************
+ * Copyright © 2014 - VideoLAN Authors
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#include "DASHManager.h"
+
+struct stream_sys_t
+{
+        dash::DASHManager   *p_dashManager;
+        dash::mpd::MPD      *p_mpd;
+        uint64_t             position;
+        char                *psz_useragent;
+};
diff --git a/modules/stream_filter/dash/http/IHTTPConnection.cpp b/modules/stream_filter/dash/http/IHTTPConnection.cpp
index 15623e7..83847ac 100644
--- a/modules/stream_filter/dash/http/IHTTPConnection.cpp
+++ b/modules/stream_filter/dash/http/IHTTPConnection.cpp
@@ -21,6 +21,7 @@
 #include "IHTTPConnection.h"
 #include "Chunk.h"
 #include "Helper.h"
+#include "dash.hpp"
 
 #include <vlc_network.h>
 
@@ -63,7 +64,8 @@ std::string IHTTPConnection::getRequestHeader(const Chunk *chunk) const
 {
     std::stringstream req;
     req << "GET " << chunk->getPath() << " HTTP/1.1\r\n" <<
-           "Host: " << chunk->getHostname() << "\r\n";
+           "Host: " << chunk->getHostname() << "\r\n" <<
+           "User-Agent: " << std::string(stream->p_sys->psz_useragent) << "\r\n";
 
     if(chunk->usesByteRange())
         req << "Range: bytes=" << chunk->getStartByte() << "-" << chunk->getEndByte() << "\r\n";



More information about the vlc-commits mailing list