summaryrefslogtreecommitdiff
path: root/src/daemon
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon')
-rw-r--r--src/daemon/dlt-daemon.c9
-rw-r--r--src/daemon/dlt_daemon_common.c7
-rw-r--r--src/daemon/dlt_daemon_connection.c21
3 files changed, 27 insertions, 10 deletions
diff --git a/src/daemon/dlt-daemon.c b/src/daemon/dlt-daemon.c
index 9956e3b..db932d0 100644
--- a/src/daemon/dlt-daemon.c
+++ b/src/daemon/dlt-daemon.c
@@ -1714,7 +1714,7 @@ int dlt_daemon_process_client_messages(DltDaemon *daemon,
return -1;
}
- must_close_socket = dlt_receiver_receive_socket(receiver);
+ must_close_socket = dlt_receiver_receive(receiver, DLT_RECEIVE_SOCKET);
if (must_close_socket < 0)
{
dlt_daemon_close_socket(receiver->fd,
@@ -1801,7 +1801,7 @@ int dlt_daemon_process_client_messages_serial(DltDaemon *daemon,
return -1;
}
- if (dlt_receiver_receive_fd(receiver) <= 0)
+ if (dlt_receiver_receive(receiver, DLT_RECEIVE_FD) <= 0)
{
dlt_log(LOG_WARNING,
"dlt_receiver_receive_fd() for messages from serial interface "
@@ -1993,7 +1993,7 @@ int dlt_daemon_process_control_messages(
return -1;
}
- if (dlt_receiver_receive_socket(receiver) <= 0)
+ if (dlt_receiver_receive(receiver, DLT_RECEIVE_SOCKET) <= 0)
{
dlt_daemon_close_socket(receiver->fd,
daemon,
@@ -2127,8 +2127,8 @@ int dlt_daemon_process_user_messages(DltDaemon *daemon,
return -1;
}
- recv = dlt_receiver_receive(receiver);
#ifdef DLT_USE_UNIX_SOCKET_IPC
+ recv = dlt_receiver_receive(receiver, DLT_RECEIVE_SOCKET);
if (recv <= 0)
{
dlt_daemon_close_socket(receiver->fd,
@@ -2139,6 +2139,7 @@ int dlt_daemon_process_user_messages(DltDaemon *daemon,
return 0;
}
#else
+ recv = dlt_receiver_receive(receiver, DLT_RECEIVE_FD);
if (recv < 0)
{
dlt_log(LOG_WARNING,
diff --git a/src/daemon/dlt_daemon_common.c b/src/daemon/dlt_daemon_common.c
index 990c029..ce2de71 100644
--- a/src/daemon/dlt_daemon_common.c
+++ b/src/daemon/dlt_daemon_common.c
@@ -89,7 +89,7 @@
#include "dlt_daemon_serial.h"
static char str[DLT_DAEMON_COMMON_TEXTBUFSIZE];
-
+char *app_recv_buffer = NULL; /* pointer to receiver buffer for application msges */
sem_t dlt_daemon_mutex;
static int dlt_daemon_cmp_apid(const void *m1, const void *m2)
@@ -280,7 +280,10 @@ int dlt_daemon_free(DltDaemon *daemon, int verbose)
}
free(daemon->user_list);
-
+ if (app_recv_buffer)
+ {
+ free(app_recv_buffer);
+ }
/* free ringbuffer */
dlt_buffer_free_dynamic(&(daemon->client_ringbuffer));
diff --git a/src/daemon/dlt_daemon_connection.c b/src/daemon/dlt_daemon_connection.c
index 7e823fb..4287623 100644
--- a/src/daemon/dlt_daemon_connection.c
+++ b/src/daemon/dlt_daemon_connection.c
@@ -49,6 +49,7 @@
#include "dlt_daemon_socket.h"
static DltConnectionId connectionId;
+extern char *app_recv_buffer;
/** @brief Generic sending function.
*
@@ -168,6 +169,11 @@ DLT_STATIC void dlt_connection_destroy_receiver(DltConnection *con)
case DLT_CONNECTION_GATEWAY:
/* We rely on the gateway for clean-up */
break;
+ case DLT_CONNECTION_APP_MSG:
+ dlt_receiver_free_unix_socket(con->receiver);
+ free(con->receiver);
+ con->receiver = NULL;
+ break;
default:
(void) dlt_receiver_free(con->receiver);
free(con->receiver);
@@ -216,11 +222,18 @@ DLT_STATIC DltReceiver *dlt_connection_get_receiver(DltDaemonLocal *daemon_local
dlt_receiver_init(ret, fd, DLT_DAEMON_RCVBUFSIZESERIAL);
}
break;
-#ifdef DLT_USE_UNIX_SOCKET_IPC
- case DLT_CONNECTION_APP_CONNECT:
- /* FALL THROUGH */
-#endif
case DLT_CONNECTION_APP_MSG:
+ ret = calloc(1, sizeof(DltReceiver));
+ if (ret)
+ {
+ #ifdef DLT_USE_UNIX_SOCKET_IPC
+ dlt_receiver_init_unix_socket(ret, fd, &app_recv_buffer);
+ #else
+ dlt_receiver_init(ret, fd, DLT_APP_RCV_BUF_MAX);
+ #endif
+ }
+ break;
+ case DLT_CONNECTION_APP_CONNECT:
/* FALL THROUGH */
case DLT_CONNECTION_ONE_S_TIMER:
/* FALL THROUGH */