+2002-02-06 joe c <marcus@marcuscom.com>
+ * etc/afpd/globals.h, etc/afpd/afp_options.c, etc/afpd/status.c
+ etc/afpd/volume.c: Add a new option -server_notif to specify that
+ a server supports server notifications. If this flag is not specified
+ the client will poll the server every 10 seconds for directory changes.
+
2002-02-03 and m <morgan@orst.edu>
* bin/afppasswd/Makefile.am
Added an install-exec-hook to make the afppasswd binary suid root
/*
- * $Id: afp_options.c,v 1.17 2002-01-19 21:29:55 jmarcus Exp $
+ * $Id: afp_options.c,v 1.18 2002-02-06 21:58:50 jmarcus Exp $
*
* Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
* Copyright (c) 1990,1993 Regents of The University of Michigan.
options->passwdfile = _PATH_AFPDPWFILE;
options->tickleval = 30;
options->timeout = 4;
+ options->server_notif = 0;
options->authprintdir = NULL;
options->umask = 0;
#ifdef ADMIN_GRP
options->timeout = 4;
}
}
+ if ((c = getoption(buf, "-server_notif"))) {
+ options->server_notif = 1;
+ }
if ((c = getoption(buf, "-server_quantum")))
options->server_quantum = strtoul(c, NULL, 0);
/*
- * $Id: globals.h,v 1.8 2001-12-15 06:25:44 jmarcus Exp $
+ * $Id: globals.h,v 1.9 2002-02-06 21:58:50 jmarcus Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
/* a couple of these options could get stuck in unions to save
* space. */
struct afp_options {
- int connections, port, transports, tickleval, timeout, flags;
+ int connections, port, transports, tickleval, timeout, server_notif, flags;
unsigned char passwdbits, passwdminlen, loginmaxfail;
u_int32_t server_quantum;
char hostname[MAXHOSTNAMELEN + 1], *server, *ipaddr, *configfile;
/*
- * $Id: status.c,v 1.6 2001-12-10 20:16:54 srittau Exp $
+ * $Id: status.c,v 1.7 2002-02-06 21:58:50 jmarcus Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
#include "afp_config.h"
#include "icon.h"
-static void status_flags(char *data, const int ipok,
+static void status_flags(char *data, const int notif, const int ipok,
const unsigned char passwdbits)
{
u_int16_t status;
if (ipok)
status |= AFPSRVRINFO_TCPIP;
status |= AFPSRVRINFO_SRVMSGS;
- status |= AFPSRVRINFO_SRVNOTIFY;
+ /* Allow the user to decide if we should support server notifications.
+ * With this turned off, the clients will poll for directory changes every
+ * 10 seconds. This might be too costly to network resources, so make
+ * this an optional thing. Default will be to _not_ support server
+ * notifications. */
+ if (notif) {
+ status |= AFPSRVRINFO_SRVNOTIFY;
+ }
status |= AFPSRVRINFO_FASTBOZO;
status = htons(status);
memcpy(data + AFPSTATUS_FLAGOFF, &status, sizeof(status));
* (16-bytes), network addresses, volume icon/mask
*/
- status_flags(status, options->fqdn ||
+ status_flags(status, options->server_notif, options->fqdn ||
(dsiconfig && dsi->server.sin_addr.s_addr),
options->passwdbits);
/* returns offset to signature offset */
/*
- * $Id: volume.c,v 1.21 2002-01-19 21:29:55 jmarcus Exp $
+ * $Id: volume.c,v 1.22 2002-02-06 21:58:50 jmarcus Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
/* a little granularity */
if (vol->v_time < tv.tv_sec) {
vol->v_time = tv.tv_sec;
- obj->attention(obj->handle, AFPATTN_NOTIFY | AFPATTN_VOLCHANGED);
+ if (obj->options.server_notif) {
+ obj->attention(obj->handle, AFPATTN_NOTIFY | AFPATTN_VOLCHANGED);
+ }
}
}