chiark / gitweb /
logging; site: Do not log transport_peers_clear if already clear
[secnet.git] / site.c
diff --git a/site.c b/site.c
index 89e415c7ff7925b6b3a7caf3cbb9f2da28e1ab5e..317bdc53e31aabbcba4a76fdbfdbfe958338a17e 100644 (file)
--- a/site.c
+++ b/site.c
@@ -257,6 +257,7 @@ typedef struct {
 } transport_peers;
 
 /* Basic operations on transport peer address sets */
+static void transport_peers_init(struct site *st, transport_peers *peers);
 static void transport_peers_clear(struct site *st, transport_peers *peers);
 static int transport_peers_valid(transport_peers *peers);
 static void transport_peers_copy(struct site *st, transport_peers *dst,
@@ -318,7 +319,6 @@ struct site {
     int ncomms;
     struct resolver_if *resolver;
     struct log_if *log;
-    struct hash_if *defhash;
     struct random_if *random;
     struct privcache_if *privkeys;
     struct sigprivkey_if *privkey_fixed;
@@ -902,7 +902,7 @@ static void peerkeys_maybe_incorporate(struct site *st, const char *file,
                                       int logcl_enoent)
 {
     struct peer_keyset *atsuffix=
-       keyset_load(file,&st->scratch,st->log,logcl_enoent,st->defhash);
+       keyset_load(file,&st->scratch,st->log,logcl_enoent);
     if (!atsuffix) return;
 
     if (st->peerkeys_current &&
@@ -2315,18 +2315,6 @@ static void site_childpersist_clearkeys(void *sst, uint32_t newphase)
        crypto operations, but that's a task for another day. */
 }
 
-static void setup_sethash(struct site *st, dict_t *dict,
-                         struct cloc loc,
-                         sig_sethash_fn *sethash, void *sigkey_st) {
-    if (!st->defhash)
-       cfgfatal(loc,"site","other settings imply `hash' key is needed");
-    sethash(sigkey_st,st->defhash);
-}
-#define SETUP_SETHASH(k) do{                                           \
-    if ((k)->sethash)                                                  \
-        setup_sethash(st,dict,loc, (k)->sethash,(k)->st);      \
-}while(0)
-
 static list_t *site_apply(closure_t *self, struct cloc loc, dict_t *context,
                          list_t *args)
 {
@@ -2431,13 +2419,10 @@ static list_t *site_apply(closure_t *self, struct cloc loc, dict_t *context,
     st->resolver=find_cl_if(dict,"resolver",CL_RESOLVER,True,"site",loc);
     st->random=find_cl_if(dict,"random",CL_RANDOMSRC,True,"site",loc);
 
-    st->defhash=find_cl_if(dict,"hash",CL_HASH,True,"site",loc);
-
     st->privkeys=find_cl_if(dict,"key-cache",CL_PRIVCACHE,False,"site",loc);
     if (!st->privkeys) {
        st->privkey_fixed=
            find_cl_if(dict,"local-key",CL_SIGPRIVKEY,True,"site",loc);
-       SETUP_SETHASH(st->privkey_fixed);
     }
 
     struct sigpubkey_if *fixed_pubkey
@@ -2448,14 +2433,12 @@ static list_t *site_apply(closure_t *self, struct cloc loc, dict_t *context,
        pathprefix_template_init(&st->peerkeys_tmpl,st->peerkeys_path,
                                 PEERKEYS_SUFFIX_MAXLEN + 1 /* nul */);
        st->peerkeys_current=keyset_load(st->peerkeys_path,
-                                        &st->scratch,st->log,M_ERR,
-                                        st->defhash);
+                                        &st->scratch,st->log,M_ERR);
        if (fixed_pubkey) {
            fixed_pubkey->dispose(fixed_pubkey->st);
        }
     } else {
        assert(fixed_pubkey);
-       SETUP_SETHASH(fixed_pubkey);
        NEW(st->peerkeys_current);
        st->peerkeys_current->refcount=1;
        st->peerkeys_current->nkeys=1;
@@ -2530,8 +2513,8 @@ static list_t *site_apply(closure_t *self, struct cloc loc, dict_t *context,
     st->chosen_transform=0;
     st->current.key_timeout=0;
     st->auxiliary_key.key_timeout=0;
-    transport_peers_clear(st,&st->peers);
-    transport_peers_clear(st,&st->setup_peers);
+    transport_peers_init(st,&st->peers);
+    transport_peers_init(st,&st->setup_peers);
     /* XXX mlock these */
     st->dhsecret=safe_malloc(st->dh->len,"site:dhsecret");
     st->sharedsecretlen=st->sharedsecretallocd=0;
@@ -2747,9 +2730,14 @@ static void transport_data_msgok(struct site *st, const struct comm_addr *a) {
 static int transport_peers_valid(transport_peers *peers) {
     return peers->npeers;
 }
+static void transport_peers_init(struct site *st, transport_peers *peers) {
+    peers->npeers= 0;
+}
 static void transport_peers_clear(struct site *st, transport_peers *peers) {
+    bool_t need_debug=!!peers->npeers;
     peers->npeers= 0;
-    transport_peers_debug(st,peers,"clear",0,0,0);
+    if (need_debug)
+       transport_peers_debug(st,peers,"clear",0,0,0);
 }
 static void transport_peers_copy(struct site *st, transport_peers *dst,
                                 const transport_peers *src) {