diff --git a/src/libei-proto.c b/src/libei-proto.c index 8bfeba3..517605a 100644 --- a/src/libei-proto.c +++ b/src/libei-proto.c @@ -129,7 +129,7 @@ ei_proto_parse_message(struct brei_message *bmsg, size_t *consumed) } static inline void -log_wire_message(struct ei *ei, const ClientMessage *msg) +log_wire_message(struct ei *ei, const ClientMessage *msg, int error) { const char *message = NULL; @@ -152,7 +152,8 @@ log_wire_message(struct ei *ei, const ClientMessage *msg) assert(!"Unimplemented message type"); break; } - log_debug(ei, "sending wire message %s\n", message); + log_debug(ei, "sending wire message %s (%s)\n", message, + strerror(-error)); #undef MSG_STRING_CASE } @@ -160,8 +161,6 @@ log_wire_message(struct ei *ei, const ClientMessage *msg) static int ei_proto_send_msg(struct ei *ei, const ClientMessage *msg) { - log_wire_message(ei, msg); - size_t msglen = client_message__get_packed_size(msg); Frame frame = FRAME__INIT; frame.length = msglen; @@ -170,14 +169,17 @@ ei_proto_send_msg(struct ei *ei, const ClientMessage *msg) uint8_t buf[framelen + msglen]; frame__pack(&frame, buf); client_message__pack(msg, buf + framelen); - return min(0, xsend(source_get_fd(ei->source), buf, sizeof(buf))); + + int rc = min(0, xsend(source_get_fd(ei->source), buf, sizeof(buf))); + + log_wire_message(ei, msg, rc); + + return rc; } static int ei_proto_send_msg_with_fds(struct ei *ei, const ClientMessage *msg, int *fds) { - log_wire_message(ei, msg); - size_t msglen = client_message__get_packed_size(msg); Frame frame = FRAME__INIT; frame.length = msglen; @@ -187,7 +189,10 @@ ei_proto_send_msg_with_fds(struct ei *ei, const ClientMessage *msg, int *fds) frame__pack(&frame, buf); client_message__pack(msg, buf + framelen); - return min(0, xsend_with_fd(source_get_fd(ei->source), buf, sizeof(buf), fds)); + int rc = min(0, xsend_with_fd(source_get_fd(ei->source), buf, sizeof(buf), fds)); + log_wire_message(ei, msg, rc); + + return rc; } int