diff -rc netatalk-1.4b2+asun2.1.3/etc/afpd/afp_asp.c netatalk-1.4b2+asun2.1.3+cap/etc/afpd/afp_asp.c
*** netatalk-1.4b2+asun2.1.3/etc/afpd/afp_asp.c	Mon Feb  8 07:35:35 1999
--- netatalk-1.4b2+asun2.1.3+cap/etc/afpd/afp_asp.c	Fri Nov  5 10:01:41 1999
***************
*** 14,19 ****
--- 14,21 ----
  #include <signal.h>
  #include <syslog.h>
  #include <sys/time.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
  
  #include <netatalk/endian.h>
  #include <atalk/atp.h>
***************
*** 24,29 ****
--- 26,32 ----
  #include "auth.h"
  
  extern struct oforks	*writtenfork;
+ extern int addr_net, addr_node, addr_uid;
  
  static AFPObj *child;
  
***************
*** 108,113 ****
--- 111,118 ----
  	afp_asp_die(1);
      }
  
+ addr_net = ntohs( asp->asp_sat.sat_addr.s_net );
+ addr_node  = asp->asp_sat.sat_addr.s_node;
      syslog( LOG_INFO, "session from %u.%u:%u on %u.%u:%u",
  	    ntohs( asp->asp_sat.sat_addr.s_net ),
  	    asp->asp_sat.sat_addr.s_node, asp->asp_sat.sat_port,
***************
*** 126,131 ****
--- 131,145 ----
  	}
  #endif	
  	syslog( LOG_INFO, "done" );
+ 	{
+ 		char addr_filename[32];
+ 		struct stat *buf;
+ 		syslog(LOG_INFO, "user %d finished on address %d.%d", addr_uid, addr_net, addr_node);
+ 		sprintf(addr_filename, "%s/net%d.%dnode%d", CAPDIR, addr_net/256, addr_net%256, addr_node);
+ 		if(!stat(addr_filename, buf))
+ 			unlink(addr_filename);
+ 		syslog(LOG_INFO, "removed %s", addr_filename);
+ 	}
  	if ( obj->options.debug ) {
  	  printf( "done\n" );
  	}
diff -rc netatalk-1.4b2+asun2.1.3/etc/afpd/auth.c netatalk-1.4b2+asun2.1.3+cap/etc/afpd/auth.c
*** netatalk-1.4b2+asun2.1.3/etc/afpd/auth.c	Fri Feb  5 18:02:46 1999
--- netatalk-1.4b2+asun2.1.3+cap/etc/afpd/auth.c	Fri Nov  5 10:09:54 1999
***************
*** 46,51 ****
--- 46,54 ----
  
  #define PASSWDLEN  8
  
+ extern int addr_net, addr_node, addr_uid;
+ extern char addr_name[32];
+ 
  #ifdef USE_PAM
  /* Static variables used to communicate between the conversation function
   * and the server_login function
***************
*** 445,450 ****
--- 448,468 ----
      }
  
      syslog( LOG_INFO, "login %s (uid %d, gid %d)", name, uid, gid );
+ {
+ 	char nodename[256];
+ 	FILE *fp;
+ 
+ 	addr_uid = uid;
+ 	strncpy(addr_name, name, 32);
+ 	sprintf(nodename, "%s/net%d.%dnode%d", CAPDIR, addr_net / 256, addr_net % 256, addr_node);
+ 	syslog (LOG_INFO, "registering %s (uid %d) on %u.%u as %s", addr_name, addr_uid, addr_net, addr_node, nodename);
+ 	if(addr_net && addr_node)
+ 	{
+ 		fp = fopen(nodename, "w");
+ 		fprintf(fp, "%s\n", addr_name);
+ 		fclose(fp);
+ 	}
+ }
      if (initgroups( name, gid ) < 0) {
  #ifdef RUN_AS_USER
        syslog(LOG_INFO, "running with uid %d", geteuid());
diff -rc netatalk-1.4b2+asun2.1.3/etc/afpd/globals.h netatalk-1.4b2+asun2.1.3+cap/etc/afpd/globals.h
*** netatalk-1.4b2+asun2.1.3/etc/afpd/globals.h	Sat Feb  6 20:36:28 1999
--- netatalk-1.4b2+asun2.1.3+cap/etc/afpd/globals.h	Thu Nov  4 16:01:59 1999
***************
*** 60,64 ****
--- 60,65 ----
  extern void afp_options_free __P((struct afp_options *, 
  				  const struct afp_options *));
  extern void setmessage __P((const char *));
+ #define CAPDIR "/var/spool/capsec"
  
  #endif /* globals.h */
diff -rc netatalk-1.4b2+asun2.1.3/etc/afpd/main.c netatalk-1.4b2+asun2.1.3+cap/etc/afpd/main.c
*** netatalk-1.4b2+asun2.1.3/etc/afpd/main.c	Mon Feb  1 08:03:59 1999
--- netatalk-1.4b2+asun2.1.3+cap/etc/afpd/main.c	Thu Nov  4 16:01:59 1999
***************
*** 40,45 ****
--- 40,47 ----
  static AFPConfig *configs;
  static server_child *server_children;
  static fd_set save_rfds;
+ int addr_net, addr_node, addr_uid;
+ char addr_name[32];
  
  static void afp_exit(const int i)
  {
diff -rc netatalk-1.4b2+asun2.1.3/libatalk/atp/atp_rsel.c netatalk-1.4b2+asun2.1.3+cap/libatalk/atp/atp_rsel.c
*** netatalk-1.4b2+asun2.1.3/libatalk/atp/atp_rsel.c	Thu Feb  4 18:36:30 1999
--- netatalk-1.4b2+asun2.1.3+cap/libatalk/atp/atp_rsel.c	Wed Nov  3 16:45:15 1999
***************
*** 24,30 ****
  #endif DROP_ATPTREL
  
  
! static int
  resend_request( ah )
      ATP		ah;
  {
--- 24,30 ----
  #endif DROP_ATPTREL
  
  
! int
  resend_request( ah )
      ATP		ah;
  {
