Author: toad
Date: 2007-04-18 19:11:26 +0000 (Wed, 18 Apr 2007)
New Revision: 12790
Modified:
trunk/freenet/src/freenet/io/comm/Message.java
Log:
Include length of sub-messages, catch Throwable in case new sub-messages are
wierd
Modified: trunk/freenet/src/freenet/io/comm/Message.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/Message.java 2007-04-18 19:05:29 UTC
(rev 12789)
+++ trunk/freenet/src/freenet/io/comm/Message.java 2007-04-18 19:11:26 UTC
(rev 12790)
@@ -76,9 +76,21 @@
}
if(mayHaveSubMessages) {
while(true) {
- Message subMessage = decodeMessage(dis, peer,
0, false, true);
- if(subMessage == null) return m;
- m.addSubMessage(subMessage);
+ int size = dis.readUnsignedShort();
+ byte[] buf = new byte[size];
+ try {
+ dis.readFully(buf);
+ } catch (EOFException e) {
+ return m;
+ }
+ DataInputStream dis2 = new DataInputStream(new
ByteArrayInputStream(buf));
+ try {
+ Message subMessage =
decodeMessage(dis2, peer, 0, false, true);
+ if(subMessage == null) return m;
+ m.addSubMessage(subMessage);
+ } catch (Throwable t) {
+ Logger.error(Message.class, "Failed to
read sub-message: "+t, t);
+ }
}
}
} catch (EOFException e) {