summaryrefslogtreecommitdiff
path: root/src/daemon/dlt_daemon_connection.c
diff options
context:
space:
mode:
authorbaduras <baduras@gmail.com>2018-01-12 12:21:07 +0100
committerChristoph Lipka <clipka@users.noreply.github.com>2018-01-12 12:21:07 +0100
commitf355ad238fb769c295e5820eb9af6a56a7afa593 (patch)
tree126d28f1f431c0e90d9eeb8f74dbbab42ebe35de /src/daemon/dlt_daemon_connection.c
parent166e6e17523051f03f79616d511a9f59d613ab97 (diff)
downloadDLT-daemon-f355ad238fb769c295e5820eb9af6a56a7afa593.tar.gz
Prevention for occasional corrupted messages (#26)
Prevention for occasional corrupted messages caused mostly due to system high load.
Diffstat (limited to 'src/daemon/dlt_daemon_connection.c')
-rw-r--r--src/daemon/dlt_daemon_connection.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/daemon/dlt_daemon_connection.c b/src/daemon/dlt_daemon_connection.c
index 8d2aa67..58b8a72 100644
--- a/src/daemon/dlt_daemon_connection.c
+++ b/src/daemon/dlt_daemon_connection.c
@@ -46,6 +46,7 @@
#include "dlt_daemon_common.h"
#include "dlt_common.h"
#include "dlt_gateway.h"
+#include "dlt_daemon_socket.h"
static DltConnectionId connectionId;
@@ -76,12 +77,14 @@ STATIC int dlt_connection_send(DltConnection *conn,
switch (type)
{
- case DLT_CONNECTION_CLIENT_MSG_SERIAL:
- return write(conn->receiver->fd, msg, msg_size);
+ case DLT_CONNECTION_CLIENT_MSG_SERIAL:
+ if(write(conn->receiver->fd, msg, msg_size) > 0)
+ return DLT_DAEMON_ERROR_OK;
+ return DLT_DAEMON_ERROR_UNKNOWN;
case DLT_CONNECTION_CLIENT_MSG_TCP:
- return send(conn->receiver->fd, msg, msg_size, 0);
+ return dlt_daemon_socket_sendreliable(conn->receiver->fd, msg, msg_size);
default:
- return -1;
+ return DLT_DAEMON_ERROR_UNKNOWN;
}
}
@@ -110,7 +113,7 @@ int dlt_connection_send_multiple(DltConnection *con,
if (con == NULL)
{
- return -1;
+ return DLT_DAEMON_ERROR_UNKNOWN;
}
if (sendserialheader)
@@ -120,21 +123,16 @@ int dlt_connection_send_multiple(DltConnection *con,
sizeof(dltSerialHeader));
}
- if ((data1 != NULL) && (ret >= 0))
+ if ((data1 != NULL) && (ret == DLT_RETURN_OK ))
{
ret = dlt_connection_send(con, data1, size1);
}
- if ((data2 != NULL) && (ret >= 0))
+ if ((data2 != NULL) && (ret == DLT_RETURN_OK))
{
ret = dlt_connection_send(con, data2, size2);
}
- if (ret >=0)
- {
- ret = DLT_DAEMON_ERROR_OK;
- }
-
return ret;
}