diff --git a/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c b/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c
index 4cb0eb9dcd47ffa72775c0fa441bea069202f36c..e9def841d0ec0e4532cf3daa620291ec75854029 100644
--- a/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c
+++ b/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c
@@ -213,7 +213,10 @@ nwGtpv1uCreateAndSendMsg( NwGtpv1uStackT *thiz, NwU32T peerIp, NwU16T peerPort,
 
     *((NwU32T *) msgHdr) = htonl(pMsg->teid);
     msgHdr += 4;
-    GTPU_DEBUG("nwGtpv1uCreateAndSendMsg to teid %u length %d\n", pMsg->teid, pMsg->msgLen);
+    GTPU_DEBUG("nwGtpv1uCreateAndSendMsg to teid %u length %d offset %d\n",
+            pMsg->teid,
+            pMsg->msgLen,
+            pMsg->msgBufOffset);
 
     if(pMsg->seqNumFlag || pMsg->extHdrFlag || pMsg->npduNumFlag) {
         *((NwU16T *) msgHdr) = (pMsg->seqNumFlag ? htons(pMsg->seqNum) : 0x0000);
diff --git a/openair-cn/UDP/udp_eNB_task.c b/openair-cn/UDP/udp_eNB_task.c
index 0bef5cdf7e799da663cfd17c7663073aaa6fbf70..bf39a87ec04c6bdd7c0ddb54e44e99e953189e73 100644
--- a/openair-cn/UDP/udp_eNB_task.c
+++ b/openair-cn/UDP/udp_eNB_task.c
@@ -334,7 +334,7 @@ void *udp_eNB_task(void *args_p)
                                 ITTI_MSG_ORIGIN_ID(received_message_p));
                         pthread_mutex_unlock(&udp_socket_list_mutex);
                         if (udp_data_req_p->buffer) {
-                            free(udp_data_req_p->buffer);
+                            itti_free(ITTI_MSG_ORIGIN_ID(received_message_p), udp_data_req_p->buffer);
                         }
                         goto on_error;
                     }
@@ -349,12 +349,14 @@ void *udp_eNB_task(void *args_p)
 
                     bytes_written = sendto(
                         udp_sd,
-                        udp_data_req_p->buffer,
+                        &udp_data_req_p->buffer[udp_data_req_p->buffer_offset],
                         udp_data_req_p->buffer_length,
                         0,
                         (struct sockaddr *)&peer_addr,
                         sizeof(struct sockaddr_in));
 
+                    itti_free(ITTI_MSG_ORIGIN_ID(received_message_p), udp_data_req_p->buffer);
+
                     if (bytes_written != udp_data_req_p->buffer_length) {
                         LOG_E(UDP_, "There was an error while writing to socket "
                             "(%d:%s)\n", errno, strerror(errno));