diff options
author | Florian Castellane <f.castellane@yahoo.fr> | 2018-02-14 09:55:12 +0100 |
---|---|---|
committer | ManikandanChockalingam <manikandan.chockalingam@in.bosch.com> | 2018-02-14 14:25:12 +0530 |
commit | b3b7f98bff66d8235474f68004f7b767835b8e3e (patch) | |
tree | d21f7f37c69a2fa90eb006d16e453625c98886e1 /src | |
parent | f5095cf33d806de1061652fa79f8ddb215c46ac4 (diff) | |
download | DLT-daemon-b3b7f98bff66d8235474f68004f7b767835b8e3e.tar.gz |
improve error reporting in dlt_daemon_socket (#41)
* improve error reporting in dlt_daemon_socket
* use dlt_vlog
Diffstat (limited to 'src')
-rw-r--r-- | src/daemon/dlt_daemon_socket.c | 31 |
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; } } |