stream_cb: don't add "*://" to protocol list

--list-protocol was printing a *:// entry, which looked strange at best.
The "*" protocol was used to always match everything, so stream_cb.c
could hook in custom protocols with a prefix chosen by the API user.

Change it instead so that an empty protocol list means "match all",
which also gets rid of the special-cased "*" entry.
This commit is contained in:
wm4 2016-09-10 15:28:50 +02:00
parent 7383b45682
commit 5ca654301b
2 changed files with 1 additions and 5 deletions

View File

@ -190,9 +190,6 @@ static stream_t *new_stream(void)
static const char *match_proto(const char *url, const char *proto)
{
if (strcmp(proto, "*") == 0)
return url;
int l = strlen(proto);
if (l > 0) {
if (strncasecmp(url, proto, l) == 0 && strncmp("://", url + l, 3) == 0)
@ -212,7 +209,7 @@ static int open_internal(const stream_info_t *sinfo, const char *url, int flags,
if (!sinfo->is_network && (flags & STREAM_NETWORK_ONLY))
return STREAM_UNSAFE;
const char *path = NULL;
const char *path = url;
for (int n = 0; sinfo->protocols && sinfo->protocols[n]; n++) {
path = match_proto(url, sinfo->protocols[n]);
if (path)

View File

@ -104,5 +104,4 @@ static int open_cb(stream_t *stream)
const stream_info_t stream_info_cb = {
.name = "stream_callback",
.open = open_cb,
.protocols = (const char*const[]){ "*", NULL },
};