diff --git a/src/vnet/session/application_local.c b/src/vnet/session/application_local.c
index 856f748..d2edd54 100644
--- a/src/vnet/session/application_local.c
+++ b/src/vnet/session/application_local.c
@@ -475,6 +475,19 @@
   return ct_session_tx (s);
 }
 
+static int
+ct_app_rx_evt (transport_connection_t * tc)
+{
+  ct_connection_t *ct = (ct_connection_t *) tc, *peer_ct;
+  session_t *ps;
+
+  peer_ct = ct_connection_get (ct->peer_index);
+  if (!peer_ct)
+    return -1;
+  ps = session_get (peer_ct->c_s_index, peer_ct->c_thread_index);
+  return session_dequeue_notify (ps);
+}
+
 static u8 *
 format_ct_listener (u8 * s, va_list * args)
 {
@@ -535,6 +548,7 @@
   .close = ct_session_close,
   .get_connection = ct_session_get,
   .custom_tx = ct_custom_tx,
+  .app_rx_evt = ct_app_rx_evt,
   .tx_type = TRANSPORT_TX_INTERNAL,
   .service_type = TRANSPORT_SERVICE_APP,
   .format_listener = format_ct_listener,
diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c
index c894c43..605fd58 100644
--- a/src/vnet/session/session_node.c
+++ b/src/vnet/session/session_node.c
@@ -947,6 +947,13 @@
 	      continue;
 	    }
 	  break;
+	case SESSION_IO_EVT_RX:
+	  s = session_event_get_session (e, thread_index);
+	  if (!s)
+	    break;
+	  transport_app_rx_evt (session_get_transport_proto (s),
+				s->connection_index, s->thread_index);
+	  break;
 	case SESSION_CTRL_EVT_CLOSE:
 	  s = session_get_from_handle_if_valid (e->session_handle);
 	  if (PREDICT_FALSE (!s))
diff --git a/src/vnet/session/transport.h b/src/vnet/session/transport.h
index e446a39..993b8bd 100644
--- a/src/vnet/session/transport.h
+++ b/src/vnet/session/transport.h
@@ -46,6 +46,7 @@
   void (*update_time) (f64 time_now, u8 thread_index);
   void (*flush_data) (transport_connection_t *tconn);
   int (*custom_tx) (void *session);
+  int (*app_rx_evt) (transport_connection_t *tconn);
 
   /*
    * Connection retrieval
@@ -111,6 +112,16 @@
   return tp_vfts[tp].custom_tx (s);
 }
 
+static inline int
+transport_app_rx_evt (transport_proto_t tp, u32 conn_index, u32 thread_index)
+{
+  transport_connection_t *tc;
+  if (!tp_vfts[tp].app_rx_evt)
+    return 0;
+  tc = transport_get_connection (tp, conn_index, thread_index);
+  return tp_vfts[tp].app_rx_evt (tc);
+}
+
 void transport_register_protocol (transport_proto_t transport_proto,
 				  const transport_proto_vft_t * vft,
 				  fib_protocol_t fib_proto, u32 output_node);
