diff --git a/discover.c b/discover.c index 2774e9d..91735bd 100644 --- a/discover.c +++ b/discover.c @@ -239,7 +239,7 @@ void cSatipDiscover::AddServer(const char *addrP, const char *modelP, const char char *r = strtok_r(p, ",", &s); while (r) { r = skipspace(r); - cString desc = cString::sprintf("%s #%d", descP, n++); + cString desc = cString::sprintf("%s #%d", !isempty(descP) ? descP : "MyBrokenHardware", n++); cSatipServer *tmp = new cSatipServer(addrP, r, desc); if (!serversM.Update(tmp)) { info("Adding server '%s|%s|%s'", tmp->Address(), tmp->Model(), tmp->Description()); @@ -247,7 +247,7 @@ void cSatipDiscover::AddServer(const char *addrP, const char *modelP, const char } else DELETENULL(tmp); - r = strtok_r(NULL, ",\n", &s); + r = strtok_r(NULL, ",", &s); } FREE_POINTER(p); } diff --git a/server.c b/server.c index 46779b7..0584dbb 100644 --- a/server.c +++ b/server.c @@ -15,9 +15,9 @@ // --- cSatipServer ----------------------------------------------------------- cSatipServer::cSatipServer(const char *addressP, const char *modelP, const char *descriptionP) -: addressM(addressP), - modelM(modelP), - descriptionM(descriptionP), +: addressM((addressP && *addressP) ? addressP : "0.0.0.0"), + modelM((modelP && *modelP) ? modelP : "DVBS-1"), + descriptionM(!isempty(descriptionP) ? descriptionP : "MyBrokenHardware"), modelTypeM(eSatipModelTypeNone), quirkM(eSatipQuirkNone), useCountM(0), @@ -26,29 +26,25 @@ cSatipServer::cSatipServer(const char *addressP, const char *modelP, const char lastSeenM(0) { memset(modelCountM, 0, sizeof(modelCountM)); - if (isempty(*modelM)) - modelM = "DVBS-1"; - if (!isempty(*descriptionM)) { - // These devices contain a session id bug: - // Inverto Airscreen Server IDL 400 ? - // Elgato EyeTV Netstream 4Sat ? - if (strstr(*descriptionM, "GSSBOX") || // Grundig Sat Systems GSS.box DSI 400 - strstr(*descriptionM, "DIGIBIT") || // Telestar Digibit R1 - strstr(*descriptionM, "Triax SatIP Converter") // Triax TSS 400 - ) - quirkM |= eSatipQuirkSessionId; - // These devices contain a play (add/delpids) parameter bug: - if (strstr(*descriptionM, "fritzdvbc")) // Fritz!WLAN Repeater DVB-C - quirkM |= eSatipQuirkPlayPids; - // These devices contain a frontend locking bug: - if (strstr(*descriptionM, "fritzdvbc")) // Fritz!WLAN Repeater DVB-C - quirkM |= eSatipQuirkForceLock; - if (quirkM != eSatipQuirkNone) - info("Malfunctioning '%s' server detected! Please, fix the firmware.", *descriptionM); - // These devices support the X_PMT protocol extension - if (strstr(*descriptionM, "OctopusNet")) // Digital Devices OctopusNet - quirkM |= eSatipQuirkUseXCI; - } + // These devices contain a session id bug: + // Inverto Airscreen Server IDL 400 ? + // Elgato EyeTV Netstream 4Sat ? + if (strstr(*descriptionM, "GSSBOX") || // Grundig Sat Systems GSS.box DSI 400 + strstr(*descriptionM, "DIGIBIT") || // Telestar Digibit R1 + strstr(*descriptionM, "Triax SatIP Converter") // Triax TSS 400 + ) + quirkM |= eSatipQuirkSessionId; + // These devices contain a play (add/delpids) parameter bug: + if (strstr(*descriptionM, "fritzdvbc")) // Fritz!WLAN Repeater DVB-C + quirkM |= eSatipQuirkPlayPids; + // These devices contain a frontend locking bug: + if (strstr(*descriptionM, "fritzdvbc")) // Fritz!WLAN Repeater DVB-C + quirkM |= eSatipQuirkForceLock; + if (quirkM != eSatipQuirkNone) + info("Malfunctioning '%s' server detected! Please, fix the firmware.", *descriptionM); + // These devices support the X_PMT protocol extension + if (strstr(*descriptionM, "OctopusNet")) // Digital Devices OctopusNet + quirkM |= eSatipQuirkUseXCI; char *s, *p = strdup(*modelM); char *r = strtok_r(p, ",", &s); while (r) {