client_len = sizeof(client_addr);
if (connect(gTraceInfo.socket.daemonSock,
(struct sockaddr *)&client_addr, client_len) < 0) {
-
close(gTraceInfo.socket.daemonSock);
gTraceInfo.socket.daemonSock = -1;
- strerror_r(errno, strerr_buf, sizeof(strerr_buf));
- PRINTERR("cannot connect to da_manager. err <%s>\n",
- strerr_buf);
ret = -1;
goto create_sock_done;
}
ret = read_log(gTraceInfo.socket.daemonSock, &log);
if (ret) {
+ PRINTERR("closed by other peer");
close(gTraceInfo.socket.daemonSock);
gTraceInfo.socket.daemonSock = -1;
- PRINTERR("closed by other peer\n");
application_exit();
return -1;
}
PRINTMSG("create_socket connect() success\n");
create_sock_done:
- PRINTMSG("socket create done with result = %d", ret);
return ret;
}
ret = read_log(gTraceInfo.socket.daemonSock, &log);
if (ret) {
+ PRINTERR("Invalid log format: ret=%d", ret);
close(gTraceInfo.socket.daemonSock);
gTraceInfo.socket.daemonSock = -1;
- PRINTERR("Invalid log format: ret=%d", ret);
return NULL;
}
#define OBJ_DUMMY 0
+static uint64_t get_total_size(ssize_t val)
+{
+#if SSIZE_MAX > UINT64_MAX
+# error "This config is not supported. SSIZE_MAX is very big."
+#endif
+
+ return (val < 0) ? 0 : (uint64_t)val;
+}
+
+static uint32_t get_pack_size(uint64_t total_size)
+{
+ return total_size > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE : total_size;
+}
+
void getAddress(const struct sockaddr *sa, char *address)
{
char buff[INET6_ADDRSTRLEN];
{
ssize_t (*sendp)(int socket, const void *message, size_t length,
int flags);
- ssize_t sret, result;
+ ssize_t sret;
BEFORE_ORIGINAL_SOCK(send, LIBC);
char *messagP = (char *)message;
length, flags);
sret = sendp(socket, message, length, flags);
- result = sret;
- if (result < 0)
- result = 0;
- info.msg_total_size = (uint64_t)result;
- info.msg_pack_size = result > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE
- : result;
+
+ info.msg_total_size = get_total_size(sret);
+ info.msg_pack_size = get_pack_size(info.msg_total_size);
info.msg_buf = messagP;
AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END('x', sret, OBJ_DUMMY, socket,
size_t, length, int, flags)
{
ssize_t (*recvp)(int socket, void *buffer, size_t length, int flags);
- ssize_t sret, result;
+ ssize_t sret;
BEFORE_ORIGINAL_SOCK(recv, LIBC);
length, flags);
sret = recvp(socket, buffer, length, flags);
- result = sret;
- if (result < 0)
- result = 0;
- info.msg_total_size = (uint64_t)result;
- info.msg_pack_size = result > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE
- : result;
+
+ info.msg_total_size = get_total_size(sret);
+ info.msg_pack_size = get_pack_size(info.msg_total_size);
info.msg_buf = bufferP;
AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END('x', sret, OBJ_DUMMY, socket,
ssize_t (*sendtop)(int socket, const void *message, size_t length,
int flags, const struct sockaddr *dest_addr,
socklen_t dest_len);
- ssize_t sret, result;
+ ssize_t sret;
BEFORE_ORIGINAL_SOCK(sendto, LIBC);
dest_len);
sret = sendtop(socket, message, length, flags, dest_addr, dest_len);
- result = sret;
- if (result < 0)
- result = 0;
- info.msg_total_size = (uint64_t)result;
- info.msg_pack_size = result > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE
- : result;
+
+ info.msg_total_size = get_total_size(sret);
+ info.msg_pack_size = get_pack_size(info.msg_total_size);
info.msg_buf = bufferP;
AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END('x', sret, OBJ_DUMMY, socket,
ssize_t (*recvfromp)(int socket, void *buffer, size_t length,
int flags, struct sockaddr *address,
socklen_t *address_len);
- ssize_t sret, result;
+ ssize_t sret;
BEFORE_ORIGINAL_SOCK(recvfrom, LIBC);
sret = recvfromp(socket, buffer, length, flags, address, address_len);
info.sock = (struct sockaddr *)address;
- result = sret;
- if (result < 0)
- result = 0;
- info.msg_total_size = (uint64_t)result;
- info.msg_pack_size = result > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE
- : result;
+ info.msg_total_size = get_total_size(sret);
+ info.msg_pack_size = get_pack_size(info.msg_total_size);
info.msg_buf = bufferP;
AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END('x', sret, OBJ_DUMMY, socket,