projects
/
debian
/
amanda
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'upstream/3.3.3'
[debian/amanda]
/
amandad-src
/
amandad.c
diff --git
a/amandad-src/amandad.c
b/amandad-src/amandad.c
index 11009d854ef405fbbfd443427c61e2bfba83e9ab..d864c3fa1bc7ca511ac93374fbccf9004a8d87f6 100644
(file)
--- a/
amandad-src/amandad.c
+++ b/
amandad-src/amandad.c
@@
-1,6
+1,7
@@
/*
* Amanda, The Advanced Maryland Automatic Network Disk Archiver
* Copyright (c) 1991-1999 University of Maryland at College Park
/*
* Amanda, The Advanced Maryland Automatic Network Disk Archiver
* Copyright (c) 1991-1999 University of Maryland at College Park
+ * Copyright (c) 2007-2012 Zmanda, Inc. All Rights Reserved.
* All Rights Reserved.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* All Rights Reserved.
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@
-151,7
+152,7
@@
struct active_service {
*/
GSList *serviceq = NULL;
*/
GSList *serviceq = NULL;
-static
int wait_30s = 1
;
+static
event_handle_t *exit_event
;
static int exit_on_qlength = 1;
static char *auth = NULL;
static kencrypt_type amandad_kencrypt = KENCRYPT_NONE;
static int exit_on_qlength = 1;
static char *auth = NULL;
static kencrypt_type amandad_kencrypt = KENCRYPT_NONE;
@@
-451,7
+452,6
@@
main(
strcasecmp(auth, "ssh") == 0 ||
strcasecmp(auth, "local") == 0 ||
strcasecmp(auth, "bsdtcp") == 0) {
strcasecmp(auth, "ssh") == 0 ||
strcasecmp(auth, "local") == 0 ||
strcasecmp(auth, "bsdtcp") == 0) {
- wait_30s = 0;
exit_on_qlength = 1;
}
exit_on_qlength = 1;
}
@@
-504,8
+504,7
@@
main(
* Schedule an event that will try to exit every 30 seconds if there
* are no requests outstanding.
*/
* Schedule an event that will try to exit every 30 seconds if there
* are no requests outstanding.
*/
- if(wait_30s)
- (void)event_register((event_id_t)30, EV_TIME, exit_check, &no_exit);
+ exit_event = event_register((event_id_t)30, EV_TIME, exit_check, &no_exit);
/*
* Call event_loop() with an arg of 0, telling it to block until all
/*
* Call event_loop() with an arg of 0, telling it to block until all
@@
-544,6
+543,7
@@
exit_check(
if (no_exit)
return;
if (no_exit)
return;
+ g_debug("timeout exit");
dbclose();
exit(0);
}
dbclose();
exit(0);
}
@@
-571,7
+571,12
@@
protocol_accept(
/*
* If handle is NULL, then the connection is closed.
*/
/*
* If handle is NULL, then the connection is closed.
*/
- if(handle == NULL) {
+ if (handle == NULL) {
+ if (exit_on_qlength && exit_event) {
+ /* remove the timeout, we will exit once the service terminate */
+ event_release(exit_event);
+ exit_event = NULL;
+ }
return;
}
return;
}
@@
-1481,9
+1486,7
@@
process_writenetfd(
dbprintf(_("process_writenetfd: dh->fd_write <= 0\n"));
} else if (size > 0) {
full_write(dh->fd_write, buf, (size_t)size);
dbprintf(_("process_writenetfd: dh->fd_write <= 0\n"));
} else if (size > 0) {
full_write(dh->fd_write, buf, (size_t)size);
- security_stream_read(dh->netfd, process_writenetfd, dh);
- }
- else {
+ } else {
aclose(dh->fd_write);
}
}
aclose(dh->fd_write);
}
}