Last I checked, there was an apparent bug in libatalk/dsi/dsi_tcp.c
where I was getting the "dsi_tcp_open: sigaction: Invalid argument"
(at least that's what I remember...)

In any case, I tracked it down to the following place in the code.
The newact and oldact structs were stack based and were not
initialized.  They were therefore somewhat random.  I think
folks have been lucky...

I'd submit a patch, but I don't know how.

-dgl-


*** netatalk-1.4b2+asun2.1.3/libatalk/dsi/dsi_tcp.c     Wed Nov 18 01:59:25 1998
--- fixed/libatalk/dsi/dsi_tcp.c        Mon Feb 28 00:35:21 2000
***************
*** 102,119 ****
--- 102,124 ----
      signal(SIGTERM, SIG_DFL);
      signal(SIGHUP, SIG_DFL);

      /* install an alarm to deal with non-responsive connections */
      if (setitimer(ITIMER_REAL, &timer, 0) < 0) {
        syslog(LOG_ERR, "dsi_tcp_open: setitimer: %m");
        exit(1);
      }
      newact.sa_handler = timeout_handler;
+     sigemptyset(&newact.sa_mask);
+     newact.sa_flags = 0;
+     oldact.sa_handler = NULL;
+     sigemptyset(&oldact.sa_mask);
+     oldact.sa_flags = 0;
      if (sigaction(SIGALRM, &newact, &oldact) < 0) {
        syslog(LOG_ERR, "dsi_tcp_open: sigaction: %m");
        exit(1);
      }

      /* read in commands. this is similar to dsi_receive except
       * for the fact that we do some sanity checking to prevent
       * delinquent connections from causing mischief. */


Reply via email to