Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
http: allow both ticket and username/password auth
When the default account has not all privileges, downloading the
playlist anonymously can result in URLs that can't be accessed with the
ticket in the URLs. The client then prompts for username and password,
you enter the correct credentials, but the credentials are not accepted.
Allow username and password in case ticket authorization fails.

Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
  • Loading branch information
swegener authored and perexg committed Nov 9, 2015
1 parent 4f18ff1 commit 85e1bbb
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions src/http.c
Expand Up @@ -545,16 +545,21 @@ http_access_verify_ticket(http_connection_t *hc)
int
http_access_verify(http_connection_t *hc, int mask)
{
int res = -1;

http_access_verify_ticket(hc);
if (hc->hc_access)
res = access_verify2(hc->hc_access, mask);

if (hc->hc_access == NULL) {
if (res) {
access_destroy(hc->hc_access);
hc->hc_access = access_get(hc->hc_username, hc->hc_password,
(struct sockaddr *)hc->hc_peer);
if (hc->hc_access == NULL)
return -1;
if (hc->hc_access)
res = access_verify2(hc->hc_access, mask);
}

return access_verify2(hc->hc_access, mask);
return res;
}

/**
Expand All @@ -571,18 +576,20 @@ http_access_verify_channel(http_connection_t *hc, int mask,
if (ticket)
http_access_verify_ticket(hc);

if (hc->hc_access == NULL) {
if (hc->hc_access)
res = access_verify2(hc->hc_access, mask);

if (res) {
access_destroy(hc->hc_access);
hc->hc_access = access_get(hc->hc_username, hc->hc_password,
(struct sockaddr *)hc->hc_peer);
if (hc->hc_access == NULL)
return -1;
if (hc->hc_access)
res = access_verify2(hc->hc_access, mask);
}

if (access_verify2(hc->hc_access, mask))
return -1;
if (!channel_access(ch, hc->hc_access, 0))
res = -1;

if (channel_access(ch, hc->hc_access, 0))
res = 0;
return res;
}

Expand Down

0 comments on commit 85e1bbb

Please sign in to comment.