Skip to content

Commit 475c7de

Browse files
authored
Merge pull request #554 from jnovy/540
Introduce pwarnf() for better diagnosis of socket/fd write issues.
2 parents 6f5e1d2 + 238f24a commit 475c7de

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

src/conn_sock.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -558,13 +558,17 @@ static void sock_try_write_to_local_sock(struct remote_sock_s *sock)
558558

559559
if (local_sock->is_stream) {
560560
w = write(*(local_sock->fd), sock->buf + sock->off, sock->remaining);
561+
if (w < 0) {
562+
pwarnf("Failed to write to fd %s", local_sock->label);
563+
}
561564
} else {
562565
w = sendto(*(local_sock->fd), sock->buf + sock->off, sock->remaining, MSG_DONTWAIT | MSG_NOSIGNAL,
563566
(struct sockaddr *)local_sock->addr, sizeof(*(local_sock->addr)));
567+
if (w < 0) {
568+
pwarnf("Failed to write to socket %s", local_sock->label);
569+
}
564570
}
565-
if (w < 0) {
566-
nwarnf("Failed to write %s", local_sock->label);
567-
} else {
571+
if (w > 0) {
568572
sock->off += w;
569573
sock->remaining -= w;
570574
}

src/utils.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,22 @@ extern gboolean use_syslog;
8383
exit(EXIT_FAILURE); \
8484
} while (0)
8585

86+
#define pwarn(s) \
87+
do { \
88+
fprintf(stderr, "[conmon:w]: %s %s\n", s, strerror(errno)); \
89+
if (use_syslog) \
90+
syslog(LOG_INFO, "conmon %.20s <pwarn>: %s %s\n", log_cid, s, strerror(errno)); \
91+
} while (0)
92+
93+
#define pwarnf(fmt, ...) \
94+
if (log_level >= WARN_LEVEL) { \
95+
do { \
96+
fprintf(stderr, "[conmon:w]: " fmt " %s\n", ##__VA_ARGS__, strerror(errno)); \
97+
if (use_syslog) \
98+
syslog(LOG_INFO, "conmon %.20s <nwarn>: " fmt ": %s\n", log_cid, ##__VA_ARGS__, strerror(errno)); \
99+
} while (0); \
100+
}
101+
86102
#define nwarn(s) \
87103
if (log_level >= WARN_LEVEL) { \
88104
do { \

0 commit comments

Comments
 (0)