summaryrefslogtreecommitdiff
path: root/sysdep
diff options
context:
space:
mode:
authorMikael Magnusson <mikma@users.sourceforge.net>2021-08-31 21:38:23 +0200
committerMikael Magnusson <mikma@users.sourceforge.net>2024-07-05 17:11:44 +0200
commita8fc5f8838f85653afe848411c92fb75c96cd5db (patch)
tree718d8323e6892a9dfe89b7a49429b6732379416e /sysdep
parentd867026d793ff60efa5aa5861db5832997ebc585 (diff)
Unix: debug
Diffstat (limited to 'sysdep')
-rw-r--r--sysdep/unix/io.c30
-rw-r--r--sysdep/unix/main.c3
2 files changed, 32 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;
diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c
index f681ab8e..d26e317a 100644
--- a/sysdep/unix/main.c
+++ b/sysdep/unix/main.c
@@ -714,6 +714,7 @@ unlink_pid_file(void)
void
cmd_shutdown(void)
{
+ log_msg(L_INFO "cmd_shutdown");
if (cli_access_restricted())
return;
@@ -724,6 +725,7 @@ cmd_shutdown(void)
void
async_shutdown(void)
{
+ log_msg(L_INFO "async_shutdown");
DBG("Shutting down...\n");
order_shutdown(0);
}
@@ -731,6 +733,7 @@ async_shutdown(void)
void
sysdep_shutdown_done(void)
{
+ log_msg(L_INFO "sysdep_shutdown_done");
unlink_pid_file();
cli_deafen(main_control_socket);
log_msg(L_FATAL "Shutdown completed");