summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Castellane <f.castellane@yahoo.fr>2018-02-14 09:55:12 +0100
committerManikandanChockalingam <manikandan.chockalingam@in.bosch.com>2018-02-14 14:25:12 +0530
commitb3b7f98bff66d8235474f68004f7b767835b8e3e (patch)
treed21f7f37c69a2fa90eb006d16e453625c98886e1
parentf5095cf33d806de1061652fa79f8ddb215c46ac4 (diff)
downloadDLT-daemon-b3b7f98bff66d8235474f68004f7b767835b8e3e.tar.gz
improve error reporting in dlt_daemon_socket (#41)
* improve error reporting in dlt_daemon_socket * use dlt_vlog
-rw-r--r--src/daemon/dlt_daemon_socket.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/daemon/dlt_daemon_socket.c b/src/daemon/dlt_daemon_socket.c
index d54cd3f..961556c 100644
--- a/src/daemon/dlt_daemon_socket.c
+++ b/src/daemon/dlt_daemon_socket.c
@@ -81,14 +81,14 @@ int dlt_daemon_socket_open(int *sock, unsigned int servPort)
snprintf(portnumbuffer, 32, "%d", servPort);
if ((rv = getaddrinfo(NULL, portnumbuffer, &hints, &servinfo)) != 0) {
- snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "getaddrinfo: %s\n", gai_strerror(rv));
- dlt_log(LOG_WARNING, str);
+ dlt_vlog(LOG_WARNING, "getaddrinfo error %d: %s\n", rv, gai_strerror(rv));
return -1;
}
for(p = servinfo; p != NULL; p = p->ai_next) {
if ((*sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1) {
- dlt_log(LOG_WARNING, "socket() error\n");
+ const int lastErrno = errno;
+ dlt_vlog(LOG_WARNING, "dlt_daemon_socket_open: socket() error %d: %s\n", lastErrno, strerror(lastErrno));
continue;
}
@@ -98,14 +98,15 @@ int dlt_daemon_socket_open(int *sock, unsigned int servPort)
if (setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1)
{
- snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "dlt_daemon_socket_open: Setsockopt error in dlt_daemon_local_connection_init: %s\n", strerror(errno));
- dlt_log(LOG_WARNING, str);
+ const int lastErrno = errno;
+ dlt_vlog(LOG_WARNING, "dlt_daemon_socket_open: Setsockopt error %d in dlt_daemon_local_connection_init: %s\n", lastErrno, strerror(lastErrno));
continue;
}
if (bind(*sock, p->ai_addr, p->ai_addrlen) == -1) {
+ const int lastErrno = errno; //close() may set errno too
close(*sock);
- dlt_log(LOG_WARNING, "bind() error\n");
+ dlt_vlog(LOG_WARNING, "dlt_daemon_socket_open: bind() error %d: %s\n", lastErrno, strerror(lastErrno));
continue;
}
@@ -128,7 +129,8 @@ int dlt_daemon_socket_open(int *sock, unsigned int servPort)
if (listen(*sock, 3) < 0)
{
- dlt_log(LOG_WARNING, "dlt_daemon_socket_open: listen() failed!\n");
+ const int lastErrno = errno;
+ dlt_vlog(LOG_WARNING, "dlt_daemon_socket_open: listen() failed with error %d: %s\n", lastErrno, strerror(lastErrno));
return -1;
}
@@ -148,9 +150,9 @@ int dlt_daemon_socket_send(int sock,void* data1,int size1,void* data2,int size2,
int ret = DLT_RETURN_OK;
if (serialheader)
{
- ret = dlt_daemon_socket_sendreliable(sock, (void *) dltSerialHeader, sizeof(dltSerialHeader));
- if(ret != DLT_RETURN_OK)
- return ret;
+ ret = dlt_daemon_socket_sendreliable(sock, (void *) dltSerialHeader, sizeof(dltSerialHeader));
+ if(ret != DLT_RETURN_OK)
+ return ret;
}
/* Send data */
@@ -171,7 +173,7 @@ int dlt_daemon_socket_send(int sock,void* data1,int size1,void* data2,int size2,
return ret;
}
-int dlt_daemon_socket_sendreliable(int sock, void* buffer,int message_size)
+int dlt_daemon_socket_sendreliable(int sock, void* buffer, int message_size)
{
int data_sent = 0;
@@ -180,14 +182,15 @@ int dlt_daemon_socket_sendreliable(int sock, void* buffer,int message_size)
ssize_t ret = send(sock, buffer + data_sent, message_size - data_sent, 0);
if (ret < 0)
{
- if (errno==EINTR || errno==EAGAIN || errno==EWOULDBLOCK)
+ const int lastErrno=errno;
+ if (lastErrno==EINTR || lastErrno==EAGAIN || lastErrno==EWOULDBLOCK)
{
// Temporary error.
- dlt_vlog(LOG_INFO,"dlt_daemon_socket_sendreliable: socket sending failed [errno: %d], trying again.\n", errno);
+ dlt_vlog(LOG_INFO,"dlt_daemon_socket_sendreliable: socket send() error %d: %s, trying again.\n", lastErrno, strerror(lastErrno));
}
else
{
- dlt_vlog(LOG_WARNING,"dlt_daemon_socket_sendreliable: socket send failed [errno: %d]!\n", errno);
+ dlt_vlog(LOG_WARNING,"dlt_daemon_socket_sendreliable: socket send() error %d: %s\n", lastErrno, strerror(lastErrno));
return DLT_DAEMON_ERROR_SEND_FAILED;
}
}