|
@@ -57,6 +57,7 @@ import java.security.cert.X509Certificate;
|
57
|
57
|
import java.util.ArrayList;
|
58
|
58
|
import java.util.Arrays;
|
59
|
59
|
import java.util.Collection;
|
|
60
|
+import java.util.Collections;
|
60
|
61
|
import java.util.HashMap;
|
61
|
62
|
import java.util.Hashtable;
|
62
|
63
|
import java.util.LinkedList;
|
|
@@ -211,7 +212,7 @@ public class IRCParser implements SecureParser, Runnable {
|
211
|
212
|
boolean addLastLine = false;
|
212
|
213
|
|
213
|
214
|
/** Channel Prefixes (ie # + etc). */
|
214
|
|
- private final List<Character> chanPrefix = new LinkedList<Character>();
|
|
215
|
+ private final List<Character> chanPrefix = Collections.synchronizedList(new LinkedList<Character>());
|
215
|
216
|
/** Hashtable storing all known clients based on nickname (in lowercase). */
|
216
|
217
|
private final Map<String, IRCClientInfo> clientList = new Hashtable<String, IRCClientInfo>();
|
217
|
218
|
/** Hashtable storing all known channels based on chanel name (inc prefix - in lowercase). */
|
|
@@ -1345,8 +1346,10 @@ public class IRCParser implements SecureParser, Runnable {
|
1345
|
1346
|
|
1346
|
1347
|
final StringBuilder builder = new StringBuilder(chanPrefix.size());
|
1347
|
1348
|
|
1348
|
|
- for (Character prefix : new LinkedList<Character>(chanPrefix)) {
|
1349
|
|
- builder.append(prefix);
|
|
1349
|
+ synchronized (chanPrefix) {
|
|
1350
|
+ for (Character prefix : chanPrefix) {
|
|
1351
|
+ builder.append(prefix);
|
|
1352
|
+ }
|
1350
|
1353
|
}
|
1351
|
1354
|
|
1352
|
1355
|
return builder.toString();
|