/*
- * $Id: afp_options.c,v 1.13.2.3 2002-02-07 23:54:27 srittau Exp $
+ * $Id: afp_options.c,v 1.13.2.4 2002-02-08 02:54:24 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.6.2.2 2002-01-14 02:56:08 srittau Exp $
+ * $Id: globals.h,v 1.6.2.3 2002-02-08 02:54:24 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.4.2.2 2002-01-02 17:27:50 srittau Exp $
+ * $Id: status.c,v 1.4.2.3 2002-02-08 02:54:24 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.14.2.4 2002-02-07 23:57:54 srittau Exp $
+ * $Id: volume.c,v 1.14.2.5 2002-02-08 02:54:24 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);
+ }
}
}