Commit f883a00d authored by Jean-Paul Saman's avatar Jean-Paul Saman

stream_filter/httplive.c: consider http port numbers

The httplive stream_filter ignored HTTP port numbers other then 80 and 443.
These where dectected by HTTP access input. Other port numbers were simply
ignored.
The patch now uses the original portnumber and carries it along when
handling relative_URI() and download URI in AccessOpen() functions.
parent 275dd462
...@@ -394,15 +394,17 @@ static char *relative_URI(stream_t *s, const char *uri, const char *path) ...@@ -394,15 +394,17 @@ static char *relative_URI(stream_t *s, const char *uri, const char *path)
char *psz_uri = NULL; char *psz_uri = NULL;
if (p_sys->m3u8.psz_password || p_sys->m3u8.psz_username) if (p_sys->m3u8.psz_password || p_sys->m3u8.psz_username)
{ {
if (asprintf(&psz_uri, "%s://%s:%s@%s%s/%s", p_sys->m3u8.psz_protocol, if (asprintf(&psz_uri, "%s://%s:%s@%s:%d%s/%s", p_sys->m3u8.psz_protocol,
p_sys->m3u8.psz_username, p_sys->m3u8.psz_password, p_sys->m3u8.psz_username, p_sys->m3u8.psz_password,
p_sys->m3u8.psz_host, path ? path : psz_path, uri) < 0) p_sys->m3u8.psz_host, p_sys->m3u8.i_port,
path ? path : psz_path, uri) < 0)
goto fail; goto fail;
} }
else else
{ {
if (asprintf(&psz_uri, "%s://%s%s/%s", p_sys->m3u8.psz_protocol, if (asprintf(&psz_uri, "%s://%s:%d%s/%s", p_sys->m3u8.psz_protocol,
p_sys->m3u8.psz_host, path ? path : psz_path, uri) < 0) p_sys->m3u8.psz_host, p_sys->m3u8.i_port,
path ? path : psz_path, uri) < 0)
goto fail; goto fail;
} }
free(psz_path); free(psz_path);
...@@ -961,7 +963,6 @@ static int parse_HTTPLiveStreaming(stream_t *s) ...@@ -961,7 +963,6 @@ static int parse_HTTPLiveStreaming(stream_t *s)
vlc_mutex_lock(&hls->lock); vlc_mutex_lock(&hls->lock);
if (p_sys->b_live) if (p_sys->b_live)
{ {
/* There should at least be 3 segments of hls->duration */ /* There should at least be 3 segments of hls->duration */
int ok = 0; int ok = 0;
int num = vlc_array_count(hls->segments); int num = vlc_array_count(hls->segments);
...@@ -1372,13 +1373,21 @@ static int AccessOpen(stream_t *s, vlc_url_t *url) ...@@ -1372,13 +1373,21 @@ static int AccessOpen(stream_t *s, vlc_url_t *url)
if (p_sys->p_access == NULL) if (p_sys->p_access == NULL)
return VLC_ENOMEM; return VLC_ENOMEM;
if (url->i_port <= 0)
{
if (strncmp(url->psz_protocol, "https", 5) == 0)
url->i_port = 443;
else
url->i_port = 80;
}
p_sys->p_access->psz_access = strdup(url->psz_protocol); p_sys->p_access->psz_access = strdup(url->psz_protocol);
p_sys->p_access->psz_filepath = strdup(url->psz_path); p_sys->p_access->psz_filepath = strdup(url->psz_path);
if (url->psz_password || url->psz_username) if (url->psz_password || url->psz_username)
{ {
if (asprintf(&p_sys->p_access->psz_location, "%s:%s@%s%s", if (asprintf(&p_sys->p_access->psz_location, "%s:%s@%s:%d%s",
url->psz_username, url->psz_password, url->psz_username, url->psz_password,
url->psz_host, url->psz_path) < 0) url->psz_host, url->i_port, url->psz_path) < 0)
{ {
msg_Err(s, "creating http access module"); msg_Err(s, "creating http access module");
goto fail; goto fail;
...@@ -1386,16 +1395,17 @@ static int AccessOpen(stream_t *s, vlc_url_t *url) ...@@ -1386,16 +1395,17 @@ static int AccessOpen(stream_t *s, vlc_url_t *url)
} }
else else
{ {
if (asprintf(&p_sys->p_access->psz_location, "%s%s", if (asprintf(&p_sys->p_access->psz_location, "%s:%d%s",
url->psz_host, url->psz_path) < 0) url->psz_host, url->i_port, url->psz_path) < 0)
{ {
msg_Err(s, "creating http access module"); msg_Err(s, "creating http access module");
goto fail; goto fail;
} }
} }
vlc_object_attach(p_sys->p_access, s); vlc_object_attach(p_sys->p_access, s);
p_sys->p_access->p_module = p_sys->p_access->p_module =
module_need(p_sys->p_access, "access", "http", true); module_need(p_sys->p_access, "access", p_sys->p_access->psz_access, true);
if (p_sys->p_access->p_module == NULL) if (p_sys->p_access->p_module == NULL)
{ {
msg_Err(s, "could not load http access module"); msg_Err(s, "could not load http access module");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment