diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2010-02-17 00:39:44 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2010-02-17 00:39:44 +0100 |
commit | 13c612efc51cf5f8d58423c59323df13739315d6 (patch) | |
tree | 225315aa888bacae4f458198934c8089be9c22fd /src | |
parent | 8c88b695289c1f3fca604a30e3ca59dd1c957377 (diff) | |
download | conntrack-tools-13c612efc51cf5f8d58423c59323df13739315d6.tar.gz conntrack-tools-13c612efc51cf5f8d58423c59323df13739315d6.zip |
conntrackd: fix `conntrackd -c' if external cache is disabled
This patch fixes a hung that occurs if you invoke `conntrackd -c'
and you have disabled the external cache.
Note that `conntrackd -c' does nothing since there is no entries
in the external cache to be committed.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/external_cache.c | 4 | ||||
-rw-r--r-- | src/external_inject.c | 4 | ||||
-rw-r--r-- | src/sync-mode.c | 4 |
3 files changed, 7 insertions, 5 deletions
diff --git a/src/external_cache.c b/src/external_cache.c index c70c818..c1181dc 100644 --- a/src/external_cache.c +++ b/src/external_cache.c @@ -88,9 +88,11 @@ static void external_cache_dump(int fd, int type) cache_dump(external, fd, type); } -static void external_cache_commit(struct nfct_handle *h, int fd) +static int external_cache_commit(struct nfct_handle *h, int fd) { cache_commit(external, h, fd); + /* Keep the client socket open, we want synchronous commits. */ + return LOCAL_RET_STOLEN; } static void external_cache_flush(void) diff --git a/src/external_inject.c b/src/external_inject.c index a54bb13..56e24a3 100644 --- a/src/external_inject.c +++ b/src/external_inject.c @@ -145,8 +145,10 @@ static void external_inject_dump(int fd, int type) { } -static void external_inject_commit(struct nfct_handle *h, int fd) +static int external_inject_commit(struct nfct_handle *h, int fd) { + /* close the commit socket. */ + return LOCAL_RET_OK; } static void external_inject_flush(void) diff --git a/src/sync-mode.c b/src/sync-mode.c index ecc2f0d..c12a34a 100644 --- a/src/sync-mode.c +++ b/src/sync-mode.c @@ -497,9 +497,7 @@ static int local_handler_sync(int fd, int type, void *data) del_alarm(&STATE_SYNC(reset_cache_alarm)); dlog(LOG_NOTICE, "committing external cache"); - STATE_SYNC(external)->commit(STATE_SYNC(commit).h, fd); - /* Keep the client socket open, we want synchronous commits. */ - ret = LOCAL_RET_STOLEN; + ret = STATE_SYNC(external)->commit(STATE_SYNC(commit).h, fd); break; case RESET_TIMERS: if (!alarm_pending(&STATE_SYNC(reset_cache_alarm))) { |