[vlc-devel] [PATCH] DASH: fix URL parsing
Frederic YHUEL
fyhuel at viotech.net
Wed Feb 22 11:29:15 CET 2012
2012/2/22 <fyhuel at viotech.net>:
> From: Frédéric Yhuel <fyhuel at viotech.net>
>
> use vlc_UrlParse() instead of home made code and handle the case where the
> port is not equal to 80.
> ---
> modules/stream_filter/dash/http/HTTPConnection.cpp | 15 +++++++--------
> modules/stream_filter/dash/http/HTTPConnection.h | 1 +
> 2 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/modules/stream_filter/dash/http/HTTPConnection.cpp b/modules/stream_filter/dash/http/HTTPConnection.cpp
> index f98c9c7..a764fa7 100644
> --- a/modules/stream_filter/dash/http/HTTPConnection.cpp
> +++ b/modules/stream_filter/dash/http/HTTPConnection.cpp
> @@ -26,6 +26,7 @@
> #endif
>
> #include "HTTPConnection.h"
> +#include <vlc_url.h>
>
> using namespace dash::http;
>
> @@ -74,14 +75,12 @@ int HTTPConnection::peek (const uint8_t **pp_peek, size_t
> }
> void HTTPConnection::parseURL ()
> {
> - this->hostname = this->url;
> - this->hostname.erase(0, 7);
> - this->path = this->hostname;
> + vlc_url_t url_components;
> + vlc_UrlParse(&url_components, this->url.c_str(), 0);
> + this->hostname.assign(url_components.psz_host);
> + this->path.assign(url_components.psz_path);
> + this->port = url_components.i_port ? url_components.i_port : 80;
>
> - size_t pos = this->hostname.find("/");
> -
> - this->hostname = this->hostname.substr(0, pos);
> - this->path = this->path.substr(pos, this->path.size());
>
> this->request = "GET " + this->path + " HTTP/1.1\r\n" +
> "Host: " + this->hostname + "\r\nConnection: close\r\n\r\n";
> @@ -110,7 +109,7 @@ bool HTTPConnection::init ()
> this->parseURL();
> this->prepareRequest();
>
> - this->httpSocket = net_ConnectTCP(this->stream, this->hostname.c_str(), 80);
> + this->httpSocket = net_ConnectTCP(this->stream, this->hostname.c_str(), this->port);
>
> if(this->sendData(this->request))
> return this->parseHeader();
> diff --git a/modules/stream_filter/dash/http/HTTPConnection.h b/modules/stream_filter/dash/http/HTTPConnection.h
> index 7cb97a0..19826bc 100644
> --- a/modules/stream_filter/dash/http/HTTPConnection.h
> +++ b/modules/stream_filter/dash/http/HTTPConnection.h
> @@ -61,6 +61,7 @@ namespace dash
> std::string url;
> std::string hostname;
> std::string path;
> + int port;
> std::string request;
> stream_t *stream;
> Chunk *chunk;
> --
> 1.7.5.4
>
I'm sorry I had in mind that two patches of Chris were still waiting
to get merged, but I said to myself "the odds for a conflict are very
low" :-)
I think my solution is better though, at least it would be nice that
the case port != 80 be handled.
Best Regards,
--
Frédéric
More information about the vlc-devel
mailing list