diff --git a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
index d1ad800..1b14a2f 100644
--- a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
+++ b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
@@ -39,28 +39,30 @@
     @Override
     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
 
-        // first we need to check whether this is an ECM
-        if (msg instanceof LispEncapsulatedControl) {
-            LispMessage innerMsg = extractLispMessage((LispEncapsulatedControl) msg);
-            if (innerMsg instanceof LispMapRequest) {
-                LispMapResolver mapResolver = new LispMapResolver();
-                LispMessage lispMessage = mapResolver.processMapRequest((LispEncapsulatedControl) msg);
+        try {
+            // first we need to check whether this is an ECM
+            if (msg instanceof LispEncapsulatedControl) {
+                LispMessage innerMsg =
+                        extractLispMessage((LispEncapsulatedControl) msg);
+                if (innerMsg instanceof LispMapRequest) {
+                    LispMapResolver mapResolver = new LispMapResolver();
+                    LispMessage lispMessage =
+                            mapResolver.processMapRequest(
+                                    (LispEncapsulatedControl) msg);
 
-                // try to remove the received map-request message from buffer
-                ReferenceCountUtil.release(msg);
-
-                ctx.writeAndFlush(lispMessage);
+                    ctx.writeAndFlush(lispMessage);
+                }
             }
-        }
 
-        if (msg instanceof LispMapRegister) {
-            LispMapServer mapServer = new LispMapServer();
-            LispMapNotify mapNotify = mapServer.processMapRegister((LispMapRegister) msg);
+            if (msg instanceof LispMapRegister) {
+                LispMapServer mapServer = new LispMapServer();
+                LispMapNotify mapNotify =
+                        mapServer.processMapRegister((LispMapRegister) msg);
 
-            // try to remove the received map-register message from buffer
+                ctx.writeAndFlush(mapNotify);
+            }
+        } finally {
             ReferenceCountUtil.release(msg);
-
-            ctx.writeAndFlush(mapNotify);
         }
     }
 
@@ -87,7 +89,8 @@
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)
             throws Exception {
         log.warn(cause.getMessage());
-        ctx.close();
+
+        //TODO: add error handle mechanisms for each cases
     }
 
     /**
