Auf Anregung von hapastor im SB habe ich folgenden Patch erstellt.
Eingehende CWs werden gespeichert und es wird geprüft, ob das CW bereits für eine andere srvid empfangen wurde (verwirrte mappings
) & ob das CW bereits älter als "timediff_old_cw" ist.
Wenn eine der beiden Bedingungen greift und der Mode auf 2 gesetzt ist, wird das CW verworfen und dementsprechend auch nicht via CacheEx weiterverbreitet.
Wenn den Patch einige verwenden, sollten die verwirrten CWs deutlich reduziert werden.
Das Module CS_CACHEEX ist erforderlich
Konfiguration:
@oscam.conf -> [cache]
cw_cache_size = count of max. CWs for CW cache (default 0)
cw_cache_memory = MByte of max. memory used for CW cache (default 0) // one entry is about 63byte ;>
cw_cache_settings = caid[&mask][@provid][$servid]:mode:timediff_old_cw[,n]
mode = 0(disabled)
= 1 log only
= 2 drop known CWs for other srvid || drop incoming CWs if timediff_old_cw > now - first_seen
timediff_old_cw = time in ms for dropping old CWs
To enable this patch, you need to define cw_cache_size or cw_cache_memory, not both is required.
If cw_cache_size or cw_cache_memory is reached, 10% of the oldest cache entries are deleted.
Logs are @loglevel 8192 & config via webif is possible.
Try it and take a look in loglevel 8192 @ your incoming CWs from all sources with for example:
cw_cache_memory = 32
cw_cache_settings = 0:1:1000
[EDiT] => Aktuelle Version: 08, falls jemand v07 im Einsatz hat, unbedingt aktualisieren:
Da war leider noch ein Fehler in v07, was den Check der memory consumption angeht, sodass der Cleanup nicht greift, also unbedingt anpassen, sonst wird "recht viel" RAM benutzt ;>
Sorry dafür.