Limit length of f show messages. Fixes issue #44.
Clients could crash if the messages were too long so we'll limit it here. Thanks to @mccore for the method here.
This commit is contained in:
parent
ddf054330a
commit
0f88e8535d
@ -114,8 +114,22 @@ public class CmdShow extends FCommand {
|
|||||||
enemyList = enemyList.substring(0, enemyList.length() - 2);
|
enemyList = enemyList.substring(0, enemyList.length() - 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(allyList.length() > 2048) {
|
||||||
|
String[] lines = splitString(allyList, 2048, 256000);
|
||||||
|
for (int i=0; i < lines.length; i++) {
|
||||||
|
sendMessage(lines[i]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
sendMessage(allyList);
|
sendMessage(allyList);
|
||||||
|
}
|
||||||
|
if(enemyList.length() > 2048) {
|
||||||
|
String[] lines = splitString(enemyList, 2048, 256000);
|
||||||
|
for (int i=0; i < lines.length; i++) {
|
||||||
|
sendMessage(lines[i]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
sendMessage(enemyList);
|
sendMessage(enemyList);
|
||||||
|
}
|
||||||
|
|
||||||
// List the members...
|
// List the members...
|
||||||
String onlineList = p.txt.parse("<a>") + "Members online: ";
|
String onlineList = p.txt.parse("<a>") + "Members online: ";
|
||||||
@ -152,8 +166,34 @@ public class CmdShow extends FCommand {
|
|||||||
offlineList = offlineList.substring(0, offlineList.length() - 2);
|
offlineList = offlineList.substring(0, offlineList.length() - 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(onlineList.length() > 2048) {
|
||||||
|
String[] lines = splitString(onlineList, 2048, 256000);
|
||||||
|
for (int i=0; i < lines.length; i++) {
|
||||||
|
sendMessage(lines[i]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
sendMessage(onlineList);
|
sendMessage(onlineList);
|
||||||
|
}
|
||||||
|
if(offlineList.length() > 2048) {
|
||||||
|
String[] lines = splitString(offlineList, 2048, 256000);
|
||||||
|
for (int i=0; i < lines.length; i++) {
|
||||||
|
sendMessage(lines[i]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
sendMessage(offlineList);
|
sendMessage(offlineList);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String[] splitString(String text, int chunkSize, int maxLength) {
|
||||||
|
char[] data = text.toCharArray();
|
||||||
|
int len = Math.min(data.length,maxLength);
|
||||||
|
String[] result = new String[(len+chunkSize-1)/chunkSize];
|
||||||
|
int linha = 0;
|
||||||
|
for (int i=0; i < len; i+=chunkSize) {
|
||||||
|
result[linha] = new String(data, i, Math.min(chunkSize,len-i));
|
||||||
|
linha++;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user