diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2021-08-31 21:38:23 +0200 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2024-07-05 17:11:44 +0200 |
commit | a8fc5f8838f85653afe848411c92fb75c96cd5db (patch) | |
tree | 718d8323e6892a9dfe89b7a49429b6732379416e /sysdep/unix/io.c | |
parent | d867026d793ff60efa5aa5861db5832997ebc585 (diff) |
Unix: debug
Diffstat (limited to 'sysdep/unix/io.c')
-rw-r--r-- | sysdep/unix/io.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index 892226e8..b36d78c0 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -824,6 +824,8 @@ sk_free(resource *r) { sock *s = (sock *) r; + log(L_TRACE "sk_free %d %d", s->fd, s->type); + sk_free_bufs(s); #ifdef HAVE_LIBSSH @@ -1570,18 +1572,35 @@ sk_open_unix(sock *s, const char *name) return 0; } +static void hexdump(const char *data, socklen_t size) +{ + char buf[1024]=""; + + for (unsigned int i = 0; i < size; i++) + { + sprintf(buf + i*3, "%02x ", data[i]); + } + log(L_TRACE "sk_connect_unix: %s", buf); +} + int sk_connect_unix(sock *s, const char *name, socklen_t namelen) { struct sockaddr_un sa; int fd; + log(L_TRACE "sk_connect_unix %d %s", name[0], name + 1); + if (namelen > sizeof(sa.sun_path)) return -1; + log(L_TRACE "sk_connect_unix 2"); + fd = socket(AF_UNIX, SOCK_STREAM, 0); if (fd < 0) - return -1; + return -2; + + log(L_TRACE "sk_connect_unix 3"); if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) { @@ -1589,11 +1608,15 @@ sk_connect_unix(sock *s, const char *name, socklen_t namelen) return -3; } + log(L_TRACE "sk_connect_unix 4"); + /* Path length checked in test_old_bird() */ memset(&sa, 0, sizeof(sa)); sa.sun_family = AF_UNIX; memcpy(sa.sun_path, name, namelen); + hexdump((const char*)&sa, sizeof(sa.sun_family) + namelen); + s->fd = fd; s->type = SK_UNIX_ACTIVE; s->ttx = ""; /* Force s->ttx != s->tpos */ @@ -1606,6 +1629,8 @@ sk_connect_unix(sock *s, const char *name, socklen_t namelen) ERR2("connect"); } + log(L_TRACE "sk_connect_unix 5"); + sk_insert(s); return 0; @@ -1980,7 +2005,10 @@ sk_read_noflush(sock *s, int revents) } } else if (!c) + { + if (s->type == SK_UNIX) log(L_TRACE "Unix socket nothing to read"); s->err_hook(s, 0); + } else { s->rpos += c; |