diff --git a/src/lib/swim/swim.c b/src/lib/swim/swim.c index 99f84c76776aa7a08243221908afe909e7836254..db8e2398353c4ddb35d3b327ded9846577eb0a34 100644 --- a/src/lib/swim/swim.c +++ b/src/lib/swim/swim.c @@ -1074,8 +1074,7 @@ swim_send_fd_msg(struct swim *swim, struct swim_task *task, assert(map_size == 2); mp_encode_map(header, map_size); say_verbose("SWIM %d: schedule %s to %s", swim_fd(swim), - swim_fd_msg_type_strs[type], - sio_strfaddr((struct sockaddr *) dst, sizeof(*dst))); + swim_fd_msg_type_strs[type], swim_inaddr_str(dst)); swim_task_send(task, dst, &swim->scheduler); } @@ -1720,9 +1719,7 @@ swim_info(struct swim *swim, struct info_handler *info) node = mh_next(swim->members, node)) { struct swim_member *m = *mh_swim_table_node(swim->members, node); - info_table_begin(info, - sio_strfaddr((struct sockaddr *) &m->addr, - sizeof(m->addr))); + info_table_begin(info, swim_inaddr_str(&m->addr)); info_append_str(info, "status", swim_member_status_strs[m->status]); info_append_str(info, "uuid", tt_uuid_str(&m->uuid)); @@ -1876,8 +1873,7 @@ swim_iterator_close(struct swim_iterator *iterator) const char * swim_member_uri(const struct swim_member *member) { - return sio_strfaddr((const struct sockaddr *) &member->addr, - sizeof(member->addr)); + return swim_inaddr_str(&member->addr); } const struct tt_uuid * diff --git a/src/lib/swim/swim_io.c b/src/lib/swim/swim_io.c index 7d6addf02ff2ca2ca4d1c4221c7e6003d41fae1f..2b310db27b08c6abfb8530e76efc7e8d0464aa7c 100644 --- a/src/lib/swim/swim_io.c +++ b/src/lib/swim/swim_io.c @@ -321,8 +321,7 @@ swim_scheduler_on_output(struct ev_loop *loop, struct ev_io *io, int events) rlist_shift_entry(&scheduler->queue_output, struct swim_task, in_queue_output); say_verbose("SWIM %d: send %s to %s", swim_scheduler_fd(scheduler), - task->desc, sio_strfaddr((struct sockaddr *) &task->dst, - sizeof(task->dst))); + task->desc, swim_inaddr_str(&task->dst)); swim_packet_build_meta(&task->packet, &scheduler->transport.addr); int rc = swim_transport_send(&scheduler->transport, task->packet.buf, task->packet.pos - task->packet.buf, @@ -353,7 +352,7 @@ swim_scheduler_on_input(struct ev_loop *loop, struct ev_io *io, int events) return; } say_verbose("SWIM %d: received from %s", swim_scheduler_fd(scheduler), - sio_strfaddr((struct sockaddr *) &src, len)); + swim_inaddr_str(&src)); struct swim_meta_def meta; const char *pos = buf, *end = pos + size; if (swim_meta_def_decode(&meta, &pos, end) < 0) @@ -363,3 +362,9 @@ swim_scheduler_on_input(struct ev_loop *loop, struct ev_io *io, int events) error: diag_log(); } + +const char * +swim_inaddr_str(const struct sockaddr_in *addr) +{ + return sio_strfaddr((struct sockaddr *) addr, sizeof(*addr)); +} diff --git a/src/lib/swim/swim_io.h b/src/lib/swim/swim_io.h index 88a7f424dd29e77ce367f6aaaa429d7b21ac27a6..7e48042794938856b34ebdbd1bd479e143d0533a 100644 --- a/src/lib/swim/swim_io.h +++ b/src/lib/swim/swim_io.h @@ -286,4 +286,12 @@ struct swim_bcast_task { struct swim_bcast_task * swim_bcast_task_new(int port, const char *desc); -#endif /* TARANTOOL_SWIM_IO_H_INCLUDED */ \ No newline at end of file +/** + * A wrapper around sio_strfaddr() so as to do not clog SWIM + * code with huge casts to 'struct sockaddr *' and passes of + * sizeof(struct sockaddr_in). + */ +const char * +swim_inaddr_str(const struct sockaddr_in *addr); + +#endif /* TARANTOOL_SWIM_IO_H_INCLUDED */