diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c
index 7ebcb08f1b6b5543b561102c129f6ade1c6e770f..bf629e55ee1c90bdc2245da443029ff251f81fb2 100644
--- a/openair2/LAYER2/MAC/ue_procedures.c
+++ b/openair2/LAYER2/MAC/ue_procedures.c
@@ -797,9 +797,11 @@ void ue_send_sl_sdu(module_id_t module_idP,
 		   NULL);
   } else { //SL_DISCOVERY
 
-     LOG_I( MAC, "SL DISCOVERY \n");
-    //call mac_rrc_data_ind
-     uint16_t len;
+     //call mac_rrc_data_ind
+     uint16_t len = sdu_len;
+     printf("SL DISCOVERY: ");
+     for (int i=0;i<len;i++) printf("%x ",((uint8_t*)sdu)[i]);
+     printf("\n");
      mac_rrc_data_ind(module_idP,
                       CC_id,
                       frameP,subframeP,
diff --git a/openair2/RRC/LITE/L2_interface.c b/openair2/RRC/LITE/L2_interface.c
index 2fbe6bec44aa378a987965157fc9a4667dda519a..9493cbfeaa0b46f36d051248ed0563cdf7f402bd 100644
--- a/openair2/RRC/LITE/L2_interface.c
+++ b/openair2/RRC/LITE/L2_interface.c
@@ -515,6 +515,7 @@ mac_rrc_data_ind(
 
     //TTN (for D2D)
     if(srb_idP == SL_DISCOVERY) {
+       LOG_I(RRC,"[UE %d] Received SDU (%d bytes) for SL_DISCOVERY on SRB %d from eNB %d\n",module_idP, sdu_lenP, srb_idP,eNB_indexP);
        decode_SL_Discovery_Message(&ctxt, eNB_indexP, sduP, sdu_lenP);
     }
 
diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c
index 937a10c5a17dda57967e173c1925987996344014..dee7159d9c74d8c6296ac27ebb32ff200b68e5b8 100644
--- a/openair2/RRC/LITE/rrc_UE.c
+++ b/openair2/RRC/LITE/rrc_UE.c
@@ -5837,7 +5837,9 @@ int decode_SL_Discovery_Message(
    int prose_addr_len;
    char send_buf[BUFSIZE];
    int n;
+   struct sidelink_ctrl_element *sl_ctrl_msg_recv = NULL;
 
+   LOG_I(RRC,"[decode_SL_Discovery_Message] received %d bytes (sizeof(struct sidelink_ctrl_element) %d)\n",Sdu_len, sizeof(struct sidelink_ctrl_element));
    //from the main program, listen for the incoming messages from control socket (ProSe App)
    prose_addr_len = sizeof(prose_app_addr);
 
@@ -5845,18 +5847,21 @@ int decode_SL_Discovery_Message(
    memcpy((void*)&UE_rrc_inst[ctxt_pP->module_id].SL_Discovery[0].Rx_buffer.Payload[0], (void*)Sdu, Sdu_len);
    UE_rrc_inst[ctxt_pP->module_id].SL_Discovery[0].Rx_buffer.payload_size = Sdu_len;
 
+   sl_ctrl_msg_recv = calloc(1, sizeof(struct sidelink_ctrl_element));
+   memcpy((void *)sl_ctrl_msg_recv, (void *)Sdu, sizeof(struct sidelink_ctrl_element));
+   LOG_I(RRC,"[decode_SL_Discovery_Message] Message type %d\n",  sl_ctrl_msg_recv->type);
+
    memset(send_buf, 0, BUFSIZE);
    //send to ProSeApp
    memcpy((void *)send_buf, (void*)Sdu, Sdu_len);
    prose_addr_len = sizeof(prose_app_addr);
    n = sendto(ctrl_sock_fd, (char *)send_buf, Sdu_len, 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
-//         free(sl_ctrl_msg_send);
+
    if (n < 0){
       LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
-      exit(EXIT_FAILURE);
+      //exit(EXIT_FAILURE);
    }
-
-
+   free(sl_ctrl_msg_recv);
 
   return(0);
 }
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 2cfaac41604e39d6656215593e00667b0ccd7c69..d5a6b0eb65a2da538b6a5d2155f9510bc157f52d 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -805,7 +805,7 @@ void ue_stub_rx_handler(unsigned int num_bytes, char *rx_buffer) {
                    0,
                    pdu->header.absSF/10,
                    pdu->header.absSF%10,
-                   pdu->payload,
+                   sldch->payload,
                    sldch->payload_length,
                    0,
                    SL_DISCOVERY_FLAG_YES);