#include <unistd.h>
#include <limits.h>
#include <errno.h>
-#include <fcntl.h>
#include <sys/poll.h>
#include <sys/types.h>
#include <sys/wait.h>
"DISK_UTIL",
"SERVER_START",
"ADD_JOB",
- "CMD_RUN"
+ "CMD_RUN",
"CMD_IOLOG",
};
struct sockaddr_in6 addr6;
socklen_t len = use_ipv6 ? sizeof(addr6) : sizeof(addr);
struct pollfd pfd;
- int ret = 0, sk, flags, exitval = 0;
+ int ret = 0, sk, exitval = 0;
FLIST_HEAD(conn_list);
dprint(FD_NET, "server enter accept loop\n");
- flags = fcntl(listen_sk, F_GETFL);
- flags |= O_NONBLOCK;
- fcntl(listen_sk, F_SETFL, flags);
+ fio_set_fd_nonblocking(listen_sk, "server");
while (!exit_backend) {
const char *from;
{
int i;
- strcpy((char *) dst->name, (char *) src->name);
+ dst->name[FIO_DU_NAME_SZ - 1] = '\0';
+ strncpy((char *) dst->name, (char *) src->name, FIO_DU_NAME_SZ - 1);
for (i = 0; i < 2; i++) {
- dst->ios[i] = cpu_to_le32(src->ios[i]);
- dst->merges[i] = cpu_to_le32(src->merges[i]);
- dst->sectors[i] = cpu_to_le64(src->sectors[i]);
- dst->ticks[i] = cpu_to_le32(src->ticks[i]);
+ dst->s.ios[i] = cpu_to_le32(src->s.ios[i]);
+ dst->s.merges[i] = cpu_to_le32(src->s.merges[i]);
+ dst->s.sectors[i] = cpu_to_le64(src->s.sectors[i]);
+ dst->s.ticks[i] = cpu_to_le32(src->s.ticks[i]);
}
- dst->io_ticks = cpu_to_le32(src->io_ticks);
- dst->time_in_queue = cpu_to_le32(src->time_in_queue);
- dst->msec = cpu_to_le64(src->msec);
+ dst->s.io_ticks = cpu_to_le32(src->s.io_ticks);
+ dst->s.time_in_queue = cpu_to_le32(src->s.time_in_queue);
+ dst->s.msec = cpu_to_le64(src->s.msec);
}
void fio_server_send_du(void)
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
- strcpy(addr.sun_path, bind_sock);
+ strncpy(addr.sun_path, bind_sock, sizeof(addr.sun_path) - 1);
len = sizeof(addr.sun_family) + strlen(bind_sock) + 1;
if (sk < 0)
return sk;
+ memset(bind_str, 0, sizeof(bind_str));
+
if (!bind_sock) {
char *p, port[16];
const void *src;
if (p)
strcat(p, port);
else
- strcpy(bind_str, port);
+ strncpy(bind_str, port, sizeof(bind_str) - 1);
} else
- strcpy(bind_str, bind_sock);
+ strncpy(bind_str, bind_sock, sizeof(bind_str) - 1);
log_info("fio: server listening on %s\n", bind_str);