diff --git a/common/utils/itti/intertask_interface_dump.c b/common/utils/itti/intertask_interface_dump.c
index b81c83646a14a9ef73c417fb68842eb6f64f3060..bcee0a73b1fcedd5f59b18854a25ad8a6cbff4a6 100644
--- a/common/utils/itti/intertask_interface_dump.c
+++ b/common/utils/itti/intertask_interface_dump.c
@@ -134,6 +134,7 @@ typedef struct {
 
 static itti_desc_t itti_dump_queue;
 static FILE *dump_file;
+static int itti_dump_running = 1;
 
 static int itti_dump_send_message(int sd, itti_dump_queue_item_t *message);
 static int itti_dump_handle_new_connection(int sd, const char *xml_definition,
@@ -276,43 +277,46 @@ int itti_dump_queue_message(message_number_t message_number,
                             const char *message_name,
                             const uint32_t message_size)
 {
-    itti_dump_queue_item_t *new;
-    size_t message_name_length;
-    int i;
+    if (itti_dump_running)
+    {
+        itti_dump_queue_item_t *new;
+        size_t message_name_length;
+        int i;
 
-    DevAssert(message_name != NULL);
-    DevAssert(message_p != NULL);
+        DevAssert(message_name != NULL);
+        DevAssert(message_p != NULL);
 
-    new = calloc(1, sizeof(itti_dump_queue_item_t));
+        new = calloc(1, sizeof(itti_dump_queue_item_t));
 
-    if (new == NULL) {
-        ITTI_DUMP_ERROR("Failed to allocate memory (%s:%d)\n",
-                   __FILE__, __LINE__);
-        return -1;
-    }
+        if (new == NULL) {
+            ITTI_DUMP_ERROR("Failed to allocate memory (%s:%d)\n",
+                       __FILE__, __LINE__);
+            return -1;
+        }
 
-    new->data = malloc(message_size);
+        new->data = malloc(message_size);
 
-    if (new->data == NULL) {
-        ITTI_DUMP_ERROR("Failed to allocate memory (%s:%d)\n",
-                   __FILE__, __LINE__);
-        return -1;
-    }
-    memcpy(new->data, message_p, message_size);
-    new->data_size      = message_size;
-    new->message_number = message_number;
+        if (new->data == NULL) {
+            ITTI_DUMP_ERROR("Failed to allocate memory (%s:%d)\n",
+                       __FILE__, __LINE__);
+            return -1;
+        }
+        memcpy(new->data, message_p, message_size);
+        new->data_size      = message_size;
+        new->message_number = message_number;
 
-    message_name_length = strlen(message_name) + 1;
-    DevCheck(message_name_length <= SIGNAL_NAME_LENGTH, message_name_length,
-             SIGNAL_NAME_LENGTH, 0);
-    memcpy(new->message_name, message_name, message_name_length);
+        message_name_length = strlen(message_name) + 1;
+        DevCheck(message_name_length <= SIGNAL_NAME_LENGTH, message_name_length,
+                 SIGNAL_NAME_LENGTH, 0);
+        memcpy(new->message_name, message_name, message_name_length);
 
-    itti_dump_enqueue_message(new, message_size, ITTI_DUMP_MESSAGE_TYPE);
+        itti_dump_enqueue_message(new, message_size, ITTI_DUMP_MESSAGE_TYPE);
 
-    for (i = 0; i < ITTI_DUMP_MAX_CON; i++) {
-        if (itti_dump_queue.itti_clients[i].sd == -1)
-            continue;
-        itti_dump_send_message(itti_dump_queue.itti_clients[i].sd, new);
+        for (i = 0; i < ITTI_DUMP_MAX_CON; i++) {
+            if (itti_dump_queue.itti_clients[i].sd == -1)
+                continue;
+            itti_dump_send_message(itti_dump_queue.itti_clients[i].sd, new);
+        }
     }
 
     return 0;
@@ -699,6 +703,9 @@ void itti_dump_exit(void)
 
     new = calloc(1, sizeof(itti_dump_queue_item_t));
 
+    /* Set a flag to stop recording message */
+    itti_dump_running = 0;
+
     /* Send the exit signal to other thread */
     itti_dump_enqueue_message(new, 0, ITTI_DUMP_EXIT_SIGNAL);