Subject: [netatalk-admins] Adrian's afpd server not letting go?

From: Duncan Sinclair <[email-masked]>
Date: Tue, 10 Mar 1998 13:32:11 +0000

I'm running netatalk-1.4b2+asun18.2 on the new Solaris kernel module.

The other day when I tried to login, I got the "too many users logged in"
message.  As I have fewer Mac users than users allowed, this came as a
surprise to me.

Further investigation showed old afpd processes which had not died,
despite the client being no longer in touch with the server.  In fact
there was one person with 3 afpd processes against her name.

Anybody seen this?  I think it happens more when the user's Mac has
crashed, rather than the connection being terminated the normal way.

Either way I get messages like this on my console:
Mar 10 13:19:18 lomax afpd[2896]: atp_rresp: Connection timed out
Mar 10 13:19:28 lomax afpd[2896]: afp_die: asp_shutdown: Connection timed out

Before "asun", I would only get the last error...

While I'm here, more problems....  On one occasion the master "afpd"
daemon died completely, requiring a manual restart.  No apparent
reason for this.

A new class of error message for me:
Mar  4 09:15:27 lomax afpd[12219]: afp_addicon: Permission denied
Mar  4 09:15:36 lomax last message repeated 258 times
Mar  9 15:24:06 lomax afpd[2060]: afp_addicon: No such file or directory

As you can see, the "Permission denied" error caused a lot of fun for
my syslogd.

Anyone, perhaps Adrian, got any thoughts on these matters?

Of the three the dying afpd is the most serious, but has only happened
once or twice.

Thanks a bunch anyway, I've just got my hands on MacOS 8 and it's nice to
be able to access my files at a more respectable speed now.

Cheers,

Duncan Sinclair.

---

From: Michael M Han <[email-masked]>
Date: Tue, 10 Mar 1998 09:41:57 -0800

There's a patch against umich 1.4b2 for Solaris. Its description seems
to match your symptoms. I had to be a little intuitive about applying
it to netatalk+asun, but I *think* what you need to do is this:

*** libatalk/asp/asp_getsess.c-
--- libatalk/asp/asp_getsess.c
***************
*** 135,141 ****
    atpb.atp_rreqdata = asp->cmdbuf;
    atpb.atp_rreqdlen = sizeof( asp->cmdbuf );
    while ( atp_rreq( asp->asp_atp, &atpb ) < 0 ) {
!       if ( errno == EINTR ) {
            continue;
        }
        return( NULL );
--- 135,141 ----
    atpb.atp_rreqdata = asp->cmdbuf;
    atpb.atp_rreqdlen = sizeof( asp->cmdbuf );
    while ( atp_rreq( asp->asp_atp, &atpb ) < 0 ) {
!       if ( errno == EINTR || errno == EAGAIN ) {
            continue;
        }
        return( NULL );

Now while I *did* do this to my own source and got it to compile and
run correctly, my knowledge of C is more or less limited to things
like 10-liners to do "Hello, world!\n" so I really couldn't say if
what I've done is right. It seems to be to my rather naive eye. The
original patch I found that I adapted to +asun was found at:

http://www.umich.edu/~rsug/netatalk/patches/1.4b2/solariseagain.diff

If someone more knowledgable about C and Solaris error conditions
would care to confirm or deny, I'd appreciate it.

Of course, a simpler approach would be to bump the -c flag handed to
afpd in /etc/init.d/atalk.

Previously...
>be able to access my files at a more respectable speed now.
_________
mike ([email-masked])
I will not squeak chalk
 - The collected wisdom of Bart Simpson