From 5519cde50874ecd006e5ebf2421b1c7d48de0072 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Sat, 26 Dec 2009 11:35:49 +0000 Subject: [PATCH 01/16] Bump debhelper compat level to 7 --- debian/compat | 2 +- debian/control | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/compat b/debian/compat index b8626c4..7f8f011 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -4 +7 diff --git a/debian/control b/debian/control index 4f28efd..2548622 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Section: net Priority: optional Maintainer: Jonathan McDowell Uploaders: Ross Burton -Build-Depends: debhelper (>= 4.1.0), cdbs, libdb4.7-dev +Build-Depends: debhelper (>= 7), cdbs, libdb4.7-dev Standards-Version: 3.7.3.0 Homepage: http://www.earth.li/projectpurple/progs/onak.html Vcs-Bzr: http://www.earth.li/~noodles/bzr/onak/mainline -- 2.39.5 From 52efac0f79343cd80f1b7815ea416fc4036aa54b Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Sat, 26 Dec 2009 12:09:21 +0000 Subject: [PATCH 02/16] Don't add a key to the stats hash if it doesn't have any sigs We always added a key to the stats hash if we tried to find its sigs, even if it didn't exist. So if it doesn't have any sigs (either because it doesn't exist or it's just a non linked in key), don't add it. Closes Debian bug #542187. --- keydb.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/keydb.c b/keydb.c index 0039057..42eebfe 100644 --- a/keydb.c +++ b/keydb.c @@ -105,16 +105,24 @@ struct ll *generic_cached_getkeysigs(uint64_t keyid) struct stats_key *key = NULL; struct stats_key *signedkey = NULL; struct ll *cursig = NULL; + struct ll *sigs = NULL; bool revoked = false; if (keyid == 0) { return NULL; } - key = createandaddtohash(keyid); + key = findinhash(keyid); - if (key->gotsigs == false) { - key->sigs = config.dbbackend->getkeysigs(key->keyid, &revoked); + if (key == NULL || key->gotsigs == false) { + sigs = config.dbbackend->getkeysigs(keyid, &revoked); + if (sigs == NULL) { + return NULL; + } + if (key == NULL) { + key = createandaddtohash(keyid); + } + key->sigs = sigs; key->revoked = revoked; for (cursig = key->sigs; cursig != NULL; cursig = cursig->next) { -- 2.39.5 From d060a4874d44c3cbe0681db81fca0e7e892f3537 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Sat, 26 Dec 2009 12:16:02 +0000 Subject: [PATCH 03/16] Change PostgreSQL backend to use PQescapeStringConn While the PostgreSQL backend is not known to be in use anywhere we were using an older escaping function (PQescapeString) which does not have knowledge of the connection character encoding and so has potential problems. Switch to using PQescapeStringConn, which does have this knowledge. --- keydb_pg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keydb_pg.c b/keydb_pg.c index 25881c0..812e5d7 100644 --- a/keydb_pg.c +++ b/keydb_pg.c @@ -218,7 +218,7 @@ static int pg_fetch_key_text(const char *search, newsearch = malloc(strlen(search) * 2 + 1); memset(newsearch, 0, strlen(search) * 2 + 1); - PQescapeString(newsearch, search, strlen(search)); + PQescapeStringConn(dbconn, newsearch, search, strlen(search), NULL); snprintf(statement, 1023, "SELECT DISTINCT onak_keys.keydata FROM onak_keys, " "onak_uids WHERE onak_keys.keyid = onak_uids.keyid " @@ -408,8 +408,8 @@ static int pg_store_key(struct openpgp_publickey *publickey, bool intrans, safeuid = malloc(strlen(uids[i]) * 2 + 1); if (safeuid != NULL) { memset(safeuid, 0, strlen(uids[i]) * 2 + 1); - PQescapeString(safeuid, uids[i], - strlen(uids[i])); + PQescapeStringConn(dbconn, safeuid, uids[i], + strlen(uids[i]), NULL); snprintf(statement, 1023, "INSERT INTO onak_uids " -- 2.39.5 From 0fdd7e71c2d05b84db19a30df8cf5d5ca1412ca4 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Sat, 26 Dec 2009 12:18:13 +0000 Subject: [PATCH 04/16] Fix PostgreSQL backend key iteration We weren't passing the correct pointer into the parse_keys function when parsing the packets we'd read. --- keydb_pg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keydb_pg.c b/keydb_pg.c index 812e5d7..85ea500 100644 --- a/keydb_pg.c +++ b/keydb_pg.c @@ -608,7 +608,7 @@ static int pg_iterate_keys(void (*iterfunc)(void *ctx, } else { read_openpgp_stream(keydb_fetchchar, &fd, &packets, 0); - parse_keys(packets, key); + parse_keys(packets, &key); lo_close(dbconn, fd); iterfunc(ctx, key); -- 2.39.5 From 428e097e40894fa2c9770f662a5a866c607ee732 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Sat, 26 Dec 2009 12:27:39 +0000 Subject: [PATCH 05/16] Clarify licence is GPL v2 We didn't specify the version in the README, though it was correct in debian/copyright. Add the version to the README and point to the versioned file in debian/copyright rather than the symlink to the current version. --- README | 4 ++-- debian/copyright | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README b/README index 09fada5..373ff65 100644 --- a/README +++ b/README @@ -148,5 +148,5 @@ tla get -A noodles@earth.li--2004-laptop onak--mainline--0.3 License: -onak is distributed under the GNU Public License, a copy of which should -have been provided with this archive as LICENSE. +onak is distributed under the GNU Public License version 2, a copy of +which should have been provided with this archive as LICENSE. diff --git a/debian/copyright b/debian/copyright index 3d21547..fd662ed 100644 --- a/debian/copyright +++ b/debian/copyright @@ -5,7 +5,7 @@ It was downloaded from http://www.earth.li/projectpurple/progs/onak.html Upstream Author: Jonathan McDowell -Copyright: +Copyright: 2002-2009 Jonathan McDowell This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,5 +22,5 @@ Copyright: 02110-1301, USA. On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. +Public License can be found in `/usr/share/common-licenses/GPL-2'. -- 2.39.5 From 3cbcf9bd0186a4256c1f0d3f75e0540594bfca1d Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Sat, 26 Dec 2009 12:50:48 +0000 Subject: [PATCH 06/16] Bump Debian Standards-Version to 3.8.3.0 No changes. --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 2548622..72e1ca1 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: optional Maintainer: Jonathan McDowell Uploaders: Ross Burton Build-Depends: debhelper (>= 7), cdbs, libdb4.7-dev -Standards-Version: 3.7.3.0 +Standards-Version: 3.8.3.0 Homepage: http://www.earth.li/projectpurple/progs/onak.html Vcs-Bzr: http://www.earth.li/~noodles/bzr/onak/mainline -- 2.39.5 From bb643498b458e352e3774c396f4ccb0e0825f1d9 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Sun, 27 Dec 2009 18:13:00 +0000 Subject: [PATCH 07/16] Change Debian package to build against libdb4.8 libdb4.7 isn't in stable (lenny) and libdb4.8 is in testing (squeeze) and sid, so given that we can do the auto upgrade no reason not to bump to use the latest. Tested with 20000+ invocations of "onak index" to try to confirm no repeat of the read-only-open problem hit with 4.6. --- debian/control | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index 72e1ca1..8367113 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Section: net Priority: optional Maintainer: Jonathan McDowell Uploaders: Ross Burton -Build-Depends: debhelper (>= 7), cdbs, libdb4.7-dev +Build-Depends: debhelper (>= 7), cdbs, libdb4.8-dev Standards-Version: 3.8.3.0 Homepage: http://www.earth.li/projectpurple/progs/onak.html Vcs-Bzr: http://www.earth.li/~noodles/bzr/onak/mainline @@ -12,7 +12,7 @@ Package: onak Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, adduser Recommends: apache2 | httpd -Suggests: db4.7-util +Suggests: db4.8-util Description: OpenPGP Key Server onak is an OpenPGP compatible keyserver which supports multiple subkeys, photo ids and path finding between keys. It can provide an HKP -- 2.39.5 From 8830b51522a66e915d665261cd82ae46e275568f Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Tue, 29 Dec 2009 16:43:42 +0000 Subject: [PATCH 08/16] 0.3.8 release Release; update version string in configure.ac, README. Update HISTORY and debian/changelog. --- HISTORY | 10 ++++++++++ README | 2 +- configure.ac | 2 +- debian/changelog | 15 ++++++++++++++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index 4ce9996..faeaae9 100644 --- a/HISTORY +++ b/HISTORY @@ -232,3 +232,13 @@ * Ensure DB4 backend dbconns memory is initialised to zero. * Open DB read only for onak lookup function. * Obey binary flag for "onak get". + +0.3.8 - 29th December 2009 + +* Fix "onak dump" to actually generate multiple output files. +* Limit key dump files to 100,000 keys for "onak dump". +* Correct formatting of some places we output a keyid. (Debian bug #540196) +* Don't add a key to the stats hash if it doesn't have any sigs. (Debian bug + #542187) +* Change PostgreSQL backend to use PQescapeStringConn +* Fix PostgreSQL backend key iteration diff --git a/README b/README index 373ff65..276dea4 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -onak 0.3.7 +onak 0.3.8 Copyright 2003-2009 Jonathan McDowell http://www.earth.li/projectpurple/progs/onak.html diff --git a/configure.ac b/configure.ac index 4f0a1db..746d9e6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.50) -AC_INIT([onak],[0.3.7],[noodles-onak@earth.li]) +AC_INIT([onak],[0.3.8],[noodles-onak@earth.li]) AC_CONFIG_SRCDIR(onak.c) AC_CONFIG_HEADER(config.h) diff --git a/debian/changelog b/debian/changelog index 39fa7de..0cb0a8d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +onak (0.3.8-1) unstable; urgency=low + + * New upstream release + * Correct formatting of some places we output a keyid. (Closes: #540196) + * Don't add a key to the stats hash if it doesn't have any sigs. + (Closes: #542187) + * Add Homepage and Vcs-Bzr fields to Debian control file + * Bump debhelper compat level to 7 + * Bump Debian Standards-Version to 3.8.3.0 + * Change to build against libdb4.8 + + -- Jonathan McDowell Tue, 29 Dec 2009 16:42:23 +0000 + onak (0.3.7-1) unstable; urgency=low * New upstream release @@ -43,7 +56,7 @@ onak (0.3.3-1) unstable; urgency=low * Cleanup logfile upon package purge (Closes: #338516) * Add suggests on db4.2-utils (Closes: #317459) * Acknowledge NMU (Closes: #408270) - + -- Jonathan McDowell Sun, 04 Mar 2007 22:55:54 +0000 onak (0.3.2-1.1) unstable; urgency=high -- 2.39.5 From 29d278dc5e9cca1cbabccc6b9536e05a76892a4d Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Mon, 18 Jan 2010 23:14:38 +1300 Subject: [PATCH 09/16] Remove keydb backend specific compilation rule We were defining a custom compile rule for the keydb .c -> .o stage, which left out the CFLAGS. We don't need this; the custom bit is at link time so we pick up the right libs. --- Makefile.in | 3 --- 1 file changed, 3 deletions(-) diff --git a/Makefile.in b/Makefile.in index 61dc164..546f3a8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -78,9 +78,6 @@ libkeydb_pg.so: keydb_pg.o libkeydb_%.so: keydb_%.o $(CC) -shared -o $@ $< $(CORE_OBJS) -keydb_%.o: keydb_%.c - $(CC) -c -fPIC $(LDFLAGS) -o $@ $< - splitkeys: splitkeys.o $(CORE_OBJS) $(KEYDB_OBJ) $(CC) $(LDFLAGS) -o splitkeys splitkeys.o $(CORE_OBJS) $(KEYDB_OBJ) \ $(LIBS) $(PROGS_LDFLAGS_EXTRA) -- 2.39.5 From 38673288bad5b2c0f730021d9311e2df73c74c82 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Mon, 14 Mar 2011 18:58:35 -0700 Subject: [PATCH 10/16] Fix delete_key function in keyd backend Need to use keyd_delete_key, not delete_key. Also move function to before usage to eliminate need for prototype definition. --- keydb_keyd.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/keydb_keyd.c b/keydb_keyd.c index 32cf0f0..3f199bd 100644 --- a/keydb_keyd.c +++ b/keydb_keyd.c @@ -188,6 +188,27 @@ static int keyd_fetch_key(uint64_t keyid, struct openpgp_publickey **publickey, return (count > 0) ? 1 : 0; } +/** +* delete_key - Given a keyid delete the key from storage. +* @keyid: The keyid to delete. +* @intrans: If we're already in a transaction. +* +* This function deletes a public key from whatever storage mechanism we +* are using. Returns 0 if the key existed. +*/ +static int keyd_delete_key(uint64_t keyid, bool intrans) +{ + int cmd = KEYD_CMD_DELETE; + + write(keyd_fd, &cmd, sizeof(cmd)); + read(keyd_fd, &cmd, sizeof(cmd)); + if (cmd == KEYD_REPLY_OK) { + write(keyd_fd, &keyid, sizeof(keyid)); + } + + return 0; +} + /** * store_key - Takes a key and stores it. * @publickey: A pointer to the public key to store. @@ -215,7 +236,7 @@ static int keyd_store_key(struct openpgp_publickey *publickey, bool intrans, keyid = get_keyid(publickey); if (update) { - delete_key(keyid, false); + keyd_delete_key(keyid, false); } write(keyd_fd, &cmd, sizeof(cmd)); @@ -247,27 +268,6 @@ static int keyd_store_key(struct openpgp_publickey *publickey, bool intrans, return 0; } -/** - * delete_key - Given a keyid delete the key from storage. - * @keyid: The keyid to delete. - * @intrans: If we're already in a transaction. - * - * This function deletes a public key from whatever storage mechanism we - * are using. Returns 0 if the key existed. - */ -static int keyd_delete_key(uint64_t keyid, bool intrans) -{ - int cmd = KEYD_CMD_DELETE; - - write(keyd_fd, &cmd, sizeof(cmd)); - read(keyd_fd, &cmd, sizeof(cmd)); - if (cmd == KEYD_REPLY_OK) { - write(keyd_fd, &keyid, sizeof(keyid)); - } - - return 0; -} - /** * fetch_key_text - Trys to find the keys that contain the supplied text. * @search: The text to search for. -- 2.39.5 From 677db9ffe0b9ea79bb52ffacc5ccb964e261093a Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Mon, 14 Mar 2011 21:29:50 -0700 Subject: [PATCH 11/16] Send close command when cleaning up keyd backend Previously we just shutdown the socket; we should really tell keyd we're disappearing as well. --- keydb_keyd.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/keydb_keyd.c b/keydb_keyd.c index 3f199bd..dcdcb85 100644 --- a/keydb_keyd.c +++ b/keydb_keyd.c @@ -103,6 +103,15 @@ static void keyd_initdb(bool readonly) */ static void keyd_cleanupdb(void) { + int cmd = KEYD_CMD_CLOSE; + + if (write(keyd_fd, &cmd, sizeof(cmd)) != sizeof(cmd)) { + logthing(LOGTHING_CRITICAL, + "Couldn't send close cmd: %s (%d)", + strerror(errno), + errno); + } + if (shutdown(keyd_fd, SHUT_RDWR) < 0) { logthing(LOGTHING_NOTICE, "Error shutting down socket: %d", errno); -- 2.39.5 From 9c96da2b288cebb53388ad4e30adbe9b87f67d91 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Tue, 15 Mar 2011 04:51:38 +0000 Subject: [PATCH 12/16] Actually close the socket in keyd/the keyd backend We were calling shutdown() on the socket, but this isn't sufficient - we need to call close() as well. Otherwise we end up leaking sockets and eventually keyd can no longer service requests. --- keyd.c | 3 ++- keydb_keyd.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/keyd.c b/keyd.c index 7b8a18f..33af8ea 100644 --- a/keyd.c +++ b/keyd.c @@ -311,7 +311,8 @@ int sock_do(int fd) int sock_close(int fd) { - return shutdown(fd, SHUT_RDWR); + shutdown(fd, SHUT_RDWR); + return close(fd); } int sock_accept(int fd) diff --git a/keydb_keyd.c b/keydb_keyd.c index dcdcb85..35d2dc4 100644 --- a/keydb_keyd.c +++ b/keydb_keyd.c @@ -116,6 +116,10 @@ static void keyd_cleanupdb(void) logthing(LOGTHING_NOTICE, "Error shutting down socket: %d", errno); } + if (close(keyd_fd) < 0) { + logthing(LOGTHING_NOTICE, "Error closing down socket: %d", + errno); + } keyd_fd = -1; return; -- 2.39.5 From 372969965f0e4938318057cc2655df90bb760072 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Mon, 14 Mar 2011 22:05:21 -0700 Subject: [PATCH 13/16] Update the copy of my key to my 4096R one I updated my key a couple of years ago; replace 0x5B430367 (1024D) with 0x2DA8B985 (4096R). --- keys/noodles.key | Bin 29692 -> 46573 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/keys/noodles.key b/keys/noodles.key index 03faf88284466edb962fe705863a67d5c38b50d2..b07bee5dc35046c76973532162e6cbae9c6c2d48 100644 GIT binary patch literal 46573 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

wfy;v6 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 -- 2.39.5 From a534b3b856a1e3cbfe60bc0bca432e802f9718be Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Tue, 15 Mar 2011 07:26:56 -0700 Subject: [PATCH 14/16] Only seed database for Debian install if we're using default config If the user changes the config away from DB4 or the default DB directory and deletes the old directory we'll think they don't have an initialised key database and try to seed it with my key. Check the config file and if it doesn't match what we expect assume the user has configured appropriately and don't seed the DB. --- debian/postinst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/postinst b/debian/postinst index 9770352..5b29801 100644 --- a/debian/postinst +++ b/debian/postinst @@ -7,10 +7,13 @@ if [ "$1" = "configure" ]; then # Add the onak user adduser --system --home /var/lib/onak --no-create-home --disabled-login onak - # - # If there's no onak database, create it by adding my key. # - if [ ! -e /var/lib/onak/num_keydb ]; then + # If we're using a default config and there's no onak database, create it + # by adding my key. + # + if grep -q "^db_dir /var/lib/onak" /etc/onak.conf && + grep -q "^db_backend db4" /etc/onak.conf && + [ ! -e /var/lib/onak/num_keydb ]; then zcat /usr/share/doc/onak/noodles.key | onak -b add fi -- 2.39.5 From f5037a4a370b891e14971228c1d491184c7fe8bd Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Wed, 16 Mar 2011 02:50:25 +0000 Subject: [PATCH 15/16] Add -c option to specify keyd config file on command line Matches the parameter the onak binary takes and allows use of something other than the compiled in default config file path. --- keyd.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/keyd.c b/keyd.c index 33af8ea..05f9fe9 100644 --- a/keyd.c +++ b/keyd.c @@ -2,11 +2,12 @@ * keyd.c - key retrieval daemon * * Jonathan McDowell - * + * * Copyright 2004 Project Purple */ #include +#include #include #include #include @@ -341,8 +342,20 @@ int main(int argc, char *argv[]) int fd = -1; fd_set rfds; char sockname[1024]; + char *configfile = NULL; + int optchar; - readconfig(NULL); + while ((optchar = getopt(argc, argv, "c:")) != -1 ) { + switch (optchar) { + case 'c': + configfile = strdup(optarg); + break; + } + } + + readconfig(configfile); + free(configfile); + configfile = NULL; initlogthing("keyd", config.logfile); catchsignals(); @@ -369,6 +382,6 @@ int main(int argc, char *argv[]) cleanuplogthing(); cleanupconfig(); - + return(EXIT_SUCCESS); } -- 2.39.5 From 8d14d66b84cc370cefe54b33de1b95bb49c90bf6 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Wed, 16 Mar 2011 03:33:26 +0000 Subject: [PATCH 16/16] Make keyd background itself by default It's meant to be a daemon, so it should run in the background. The -f option will cause it to run in the foreground for debugging etc. --- keyd.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/keyd.c b/keyd.c index 05f9fe9..18d09bf 100644 --- a/keyd.c +++ b/keyd.c @@ -6,6 +6,7 @@ * Copyright 2004 Project Purple */ +#include #include #include #include @@ -28,6 +29,32 @@ #include "onak-conf.h" #include "parsekey.h" +void daemonize(void) +{ + pid_t pid; + + pid = fork(); + + if (pid < 0) { + logthing(LOGTHING_CRITICAL, + "Failed to fork into background: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } else if (pid > 0) { + logthing(LOGTHING_INFO, "Backgrounded as pid %d.", pid); + exit(EXIT_SUCCESS); + } + + pid = setsid(); + + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "w", stdout); + freopen("/dev/null", "w", stderr); + + return; +} + void iteratefunc(void *ctx, struct openpgp_publickey *key) { struct openpgp_packet_list *packets = NULL; @@ -343,13 +370,17 @@ int main(int argc, char *argv[]) fd_set rfds; char sockname[1024]; char *configfile = NULL; + bool foreground = false; int optchar; - while ((optchar = getopt(argc, argv, "c:")) != -1 ) { + while ((optchar = getopt(argc, argv, "c:f")) != -1 ) { switch (optchar) { case 'c': configfile = strdup(optarg); break; + case 'f': + foreground = true; + break; } } @@ -358,6 +389,10 @@ int main(int argc, char *argv[]) configfile = NULL; initlogthing("keyd", config.logfile); + if (!foreground) { + daemonize(); + } + catchsignals(); snprintf(sockname, 1023, "%s/%s", config.db_dir, KEYD_SOCKET); -- 2.39.5