From 52ae2ec7fd3dd5e17685a054dd9c03f61e786e48 Mon Sep 17 00:00:00 2001 From: Ajay Date: Tue, 7 Jun 2016 18:08:06 +0000 Subject: [PATCH] Bug-6005: PCErr generated while parsing of received PCRpt message is not sent out - use Channel#writeAndFlush instead of ChannelHandlerContext#write when sending out PCEP error message so that decode handler is invoked - added listener to ChannelFuture to log result of send operation Change-Id: I03003577003c2f509b5a7a5ae0d1decdd12555c6 Signed-off-by: Ajay --- .../protocol/bgp/rib/impl/BGPSessionImpl.java | 2 +- .../pcep/impl/PCEPByteToMessageDecoder.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java index 6b00897598..c7cbd42fbd 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java @@ -269,7 +269,7 @@ public class BGPSessionImpl extends SimpleChannelInboundHandler im @Override public void operationComplete(final ChannelFuture f) { if (!f.isSuccess()) { - LOG.warn("Failed to send message {} to socket {}", msg, f.cause(), BGPSessionImpl.this.channel); + LOG.warn("Failed to send message {} to socket {}", msg, BGPSessionImpl.this.channel, f.cause()); } else { LOG.trace("Message {} sent to socket {}", msg, BGPSessionImpl.this.channel); } diff --git a/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPByteToMessageDecoder.java b/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPByteToMessageDecoder.java index 1060db9e05..2b3809ead0 100644 --- a/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPByteToMessageDecoder.java +++ b/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPByteToMessageDecoder.java @@ -10,6 +10,8 @@ package org.opendaylight.protocol.pcep.impl; import com.google.common.base.Preconditions; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageDecoder; import java.util.ArrayList; @@ -55,9 +57,17 @@ public final class PCEPByteToMessageDecoder extends ByteToMessageDecoder { if (!errors.isEmpty()) { // We have a bunch of messages, send them out for (final Object e : errors) { - ctx.write(e); + ctx.channel().writeAndFlush(e).addListener(new ChannelFutureListener() { + @Override + public void operationComplete(final ChannelFuture f) { + if (!f.isSuccess()) { + LOG.warn("Failed to send message {} to socket {}", e, ctx.channel(), f.cause()); + } else { + LOG.trace("Message {} sent to socket {}", e, ctx.channel()); + } + } + }); } - ctx.flush(); } } -- 2.36.6