From ccc13bbbf173335ee69bfeeff344fee9d721e3e3 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 14 Oct 2015 20:37:15 +0200 Subject: [PATCH] IPTV: m3u parser opmized to skip all unknown '#EXT' lines --- src/input/mpegts/iptv/iptv_auto.c | 9 +++++++-- src/input/mpegts/iptv/iptv_http.c | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/input/mpegts/iptv/iptv_auto.c b/src/input/mpegts/iptv/iptv_auto.c index c3f1a801b..45e5eb2a8 100644 --- a/src/input/mpegts/iptv/iptv_auto.c +++ b/src/input/mpegts/iptv/iptv_auto.c @@ -236,14 +236,19 @@ iptv_auto_network_process_m3u(iptv_network_t *in, char *data, name = data; } while (*data && *data != '\n') data++; - if (*data) { *data = '\0'; data++; } + if (*data) data++; + continue; + } else if (strncmp(data, "#EXT", 4) == 0) { + data += 4; + while (*data && *data != '\n') data++; + if (*data) data++; continue; } while (*data && *data <= ' ') data++; url = data; while (*data && *data != '\n') data++; if (*data) { *data = '\0'; data++; } - if (*url) + if (*url && *url > ' ') iptv_auto_network_process_m3u_item(in, last_url, remove_args, url, name, logo, epgid, chnum, &total, &count); diff --git a/src/input/mpegts/iptv/iptv_http.c b/src/input/mpegts/iptv/iptv_http.c index 2e9ef308b..a95a736ac 100644 --- a/src/input/mpegts/iptv/iptv_http.c +++ b/src/input/mpegts/iptv/iptv_http.c @@ -32,16 +32,16 @@ iptv_http_m3u(char *data) while (*data && *data != '\n') data++; if (*data) data++; while (*data) { - if (strncmp(data, "#EXTINF:", 8) == 0) { + if (strncmp(data, "#EXT", 4) == 0) { while (*data && *data != '\n') data++; - if (*data) { *data = '\0'; data++; } + if (*data) data++; continue; } while (*data && *data <= ' ') data++; url = data; while (*data && *data != '\n') data++; if (*data) { *data = '\0'; data++; } - if (*url) + if (*url && *url > ' ') return strdup(url); } return NULL; -- 2.47.3