[GDLT-3] Fixed missing semaphore around dlt_buffer_push3
authorChristian Muck <christian.muck@bmw.de>
Tue, 8 May 2012 08:23:57 +0000 (10:23 +0200)
committerChristian Muck <christian.muck@bmw.de>
Wed, 30 May 2012 07:05:28 +0000 (09:05 +0200)
Signed-off-by: Christian Muck <christian.muck@bmw.de>
src/daemon/dlt-daemon.c
src/daemon/dlt_daemon_common.c

index 476f442..be0eeb2 100644 (file)
@@ -1855,6 +1855,7 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo
             /* Message was not sent to client, so store it in client ringbuffer */
             if (sent==0)
             {
+               DLT_DAEMON_SEM_LOCK();
                 if (dlt_buffer_push3(&(daemon->client_ringbuffer),
                                     daemon_local->msg.headerbuffer+sizeof(DltStorageHeader),daemon_local->msg.headersize-sizeof(DltStorageHeader),
                                     daemon_local->msg.databuffer,daemon_local->msg.datasize,
@@ -1863,6 +1864,7 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo
                                {
                                        dlt_log(LOG_ERR,"Storage of message in history buffer failed! Message discarded.\n");
                                }
+                DLT_DAEMON_SEM_FREE();
             }
 
         }
index 9a2cbea..66e2b20 100644 (file)
@@ -2221,6 +2221,7 @@ void dlt_daemon_control_send_control_message( int sock, DltDaemon *daemon, DltMe
     }
     else
     {
+        DLT_DAEMON_SEM_LOCK();
         /* Store message in history buffer */
         if (dlt_buffer_push3(&(daemon->client_ringbuffer),
                             msg->headerbuffer+sizeof(DltStorageHeader),msg->headersize-sizeof(DltStorageHeader),
@@ -2228,9 +2229,11 @@ void dlt_daemon_control_send_control_message( int sock, DltDaemon *daemon, DltMe
                             0, 0
                            )<0)
                {
+               DLT_DAEMON_SEM_FREE();
                        dlt_log(LOG_ERR,"Storage of message in history buffer failed! Message discarded.\n");
                        return;
                }
+        DLT_DAEMON_SEM_FREE();
     }
 }