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 6c723a6..d1ad800 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
@@ -24,7 +24,6 @@
 import org.onosproject.lisp.msg.protocols.LispMapNotify;
 import org.onosproject.lisp.msg.protocols.LispMapRegister;
 import org.onosproject.lisp.msg.protocols.LispMapRequest;
-import org.onosproject.lisp.msg.protocols.LispMapReply;
 import org.onosproject.lisp.msg.protocols.LispMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,7 +41,16 @@
 
         // first we need to check whether this is an ECM
         if (msg instanceof LispEncapsulatedControl) {
-            msg = extractMapRequest((LispEncapsulatedControl) msg);
+            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);
+            }
         }
 
         if (msg instanceof LispMapRegister) {
@@ -54,14 +62,6 @@
 
             ctx.writeAndFlush(mapNotify);
         }
-
-        if (msg instanceof LispMapRequest) {
-            LispMapResolver mapResolver = new LispMapResolver();
-            LispMapReply mapReply =
-                    (LispMapReply) mapResolver.processMapRequest((LispMapRequest) msg);
-
-            // TODO: serialize mapReply message and write to channel
-        }
     }
 
     @Override
@@ -96,7 +96,9 @@
      * @param ecm Encapsulated Control Message
      * @return extracted LISP message
      */
-    private LispMessage extractMapRequest(LispEncapsulatedControl ecm) {
-        return ecm.getControlMessage();
+    private LispMessage extractLispMessage(LispEncapsulatedControl ecm) {
+        LispMessage message = ecm.getControlMessage();
+        message.configSender(ecm.getSender());
+        return message;
     }
 }
