#include <atalk/dsi.h>
#include <atalk/compat.h>
#include <atalk/util.h>
+#include <atalk/locking.h>
#include "globals.h"
#include "switch.h"
#include "fork.h"
#include "dircache.h"
-#ifdef FORCE_UIDGID
-#warning UIDGID
-#include "uid.h"
-#endif /* FORCE_UIDGID */
-
/*
* We generally pass this from afp_over_dsi to all afp_* funcs, so it should already be
* available everywhere. Unfortunately some funcs (eg acltoownermode) need acces to it
static void afp_dsi_die(int sig)
{
DSI *dsi = (DSI *)AFPobj->handle;
- static volatile int in_handler;
-
- if (in_handler) {
- return;
- }
- /* it's not atomic but we don't care because it's an exit function
- * ie if a signal is received here, between the test and the affectation,
- * it will not return.
- */
- in_handler = 1;
if (dsi->flags & DSI_RECONINPROG) {
/* Primary reconnect succeeded, got SIGTERM from afpd parent */
}
}
- if (!(dsi->flags & DSI_EXTSLEEP)) {
+ if (!(dsi->flags & DSI_EXTSLEEP) && (dsi->flags & DSI_SLEEPING)) {
LOG(log_debug, logtype_afpd, "afp_over_dsi: got data, ending normal sleep");
dsi->flags &= ~DSI_SLEEPING;
dsi->tickle = 0;
dir_free_invalid_q();
-#ifdef FORCE_UIDGID
- /* bring everything back to old euid, egid */
- if (obj->force_uid)
- restore_uidgid ( &obj->uidgid );
-#endif /* FORCE_UIDGID */
dsi->flags &= ~DSI_RUNNING;
/* Add result to the AFP replay cache */
AfpNum2name(function), AfpErr2name(err));
dsi->flags &= ~DSI_RUNNING;
-#ifdef FORCE_UIDGID
- /* bring everything back to old euid, egid */
- if (obj->force_uid)
- restore_uidgid ( &obj->uidgid );
-#endif /* FORCE_UIDGID */
} else {
LOG(log_error, logtype_afpd, "(write) bad function %x", function);
dsi->datalen = 0;