Committed by
Gerrit Code Review
Process protocol message read partially from the buffer.
Change-Id: I1888dce82bea566796bc222329650582cba5a276
Showing
1 changed file
with
15 additions
and
1 deletions
... | @@ -48,13 +48,27 @@ public class BgpMessageDecoder extends FrameDecoder { | ... | @@ -48,13 +48,27 @@ public class BgpMessageDecoder extends FrameDecoder { |
48 | HexDump.dump(buffer); | 48 | HexDump.dump(buffer); |
49 | 49 | ||
50 | BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader(); | 50 | BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader(); |
51 | - List<BgpMessage> msgList = new LinkedList<BgpMessage>(); | 51 | + List<BgpMessage> msgList = (List<BgpMessage>) ctx.getAttachment(); |
52 | 52 | ||
53 | + if (msgList == null) { | ||
54 | + msgList = new LinkedList<>(); | ||
55 | + } | ||
56 | + | ||
57 | + try { | ||
53 | while (buffer.readableBytes() > 0) { | 58 | while (buffer.readableBytes() > 0) { |
59 | + buffer.markReaderIndex(); | ||
54 | BgpHeader bgpHeader = new BgpHeader(); | 60 | BgpHeader bgpHeader = new BgpHeader(); |
55 | BgpMessage message = reader.readFrom(buffer, bgpHeader); | 61 | BgpMessage message = reader.readFrom(buffer, bgpHeader); |
56 | msgList.add(message); | 62 | msgList.add(message); |
57 | } | 63 | } |
64 | + | ||
58 | return msgList; | 65 | return msgList; |
66 | + } catch (Exception e) { | ||
67 | + log.debug("Bgp protocol message decode error"); | ||
68 | + buffer.resetReaderIndex(); | ||
69 | + buffer.discardReadBytes(); | ||
70 | + ctx.setAttachment(msgList); | ||
71 | + } | ||
72 | + return null; | ||
59 | } | 73 | } |
60 | } | 74 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment