MessageSizeMax ist eine Einstellung in Ice, die die maximale Größe einer Nachricht in KiB (Kibibyte) angibt. Genauere Informationen gibt es auf der Herstellerseite unter https://www.zeroc.com/doc/Ice-3.4.1/manual/PropRef.50.11.html#51122.
Ice wird als Schnittstelle zwischen dem Mumble-Server (Murmur) und einem beliebigen anderen Script/Programm verwendet, z. B. einem Admin-Interface, einem Mumble-Viewer oder Sonstigem.
Hat man einen sehr großen Server (bezogen auf Kommentare und Bilder) und benutzt z. B. die Funktion getTree() in Ice, dann kann die resultierende Nachricht - die den kompletten Kanalbaum samt Beschreibungen, etc. beinhaltet - größer sein als der Wert von MessageSizeMax und man bekommt je nach Programmiersprache eine Fehlermeldung wie:
exception ::Ice::MemoryLimitException
Ice::MemoryLimitException: protocol error: memory limit exceeded thrown in
In diesem Fall muss man den Wert erhöhen.
Um den Wert effektiv zu erhöhen, muss man ihn an beiden Endpunkten der Ice-Verbindung erhöhen, also sowohl am Endpunkt des Mumble-Servers als auch am Endpunkt des Scripts/Programms, über das man Daten mit dem Mumble-Server austauscht.
Auf dem Mumble-Server (Murmur) kann man mittlerweile die Größe von MessageSizeMax selbst festlegen. Die Voreinstellung in der mitgelieferten .ini-Konfigurationsdatei ist auf 65535 gesetzt - das entspricht 64 MebiByte, da die Angabe in KiB ausgewertet wird. Das reicht selbst für sehr große Server.
Möchte man den Wert noch größer einstellen, so gibt es zwei Möglichkeiten:
Ice.MessageSizeMax=65536
Diese Einstellung gilt nur für den Endpunkt Mumble-Server, der Endpunkt des Scripts/Programms muss man auch noch anpasst werden, siehe nächster Punkt.
Wie man ganz allgemein Ice-Einstellungen in seinen Programmen festlegt, steht in folgender Liste zu den von Ice unterstützten Programmiersprachen: https://doc.zeroc.com/display/Ice/Setting+Properties.
Siehe hier.
Ice.loadSlice("--all -I/usr/share/Ice/slice /usr/share/Ice/slice/Murmur.ice") props = Ice.createProperties([]) props.setProperty("Ice.MessageSizeMax", "65535") id = Ice.InitializationData() id.properties = props ice = Ice.initialize(id)
Im aktuellen Mumble-Django 2.4 (wahrscheinlich auch entsprechend bei älteren Versionen) muss die Datei mumble-django/pyweb/mumble/MumbleCtlIce.py bzw. in Debian Squeeze nach Zeile 86 die folgende Zeile in derselben Einrückung eingefügt werden:
prop.setProperty("Ice.MessageSizeMax", "65535")
Am Ende sollte man das hier haben:
... prop = Ice.createProperties([]) prop.setProperty("Ice.ImplicitContext", "Shared") prop.setProperty("Ice.MessageSizeMax", "65535") idd = Ice.InitializationData() ...
Nach einem Restart von Mumble-Django sollte nun wieder alles funktionieren.
Ein entsprechender Bugreport wurde bereits eingereicht :).
In die entsprechende php.ini eintragen:
ice.options=”--Ice.MessageSizeMax=65535″
Und danach den Server neustarten.
Hier ist die offizielle Dokumentation zu MessageSizeMax: https://www.zeroc.com/doc/Ice-3.4.1/manual/PropRef.50.11.html#51122.