diff --git a/dnxmq/mqexec.c b/dnxmq/mqexec.c index 02cc724..67580b4 100644 --- a/dnxmq/mqexec.c +++ b/dnxmq/mqexec.c @@ -671,6 +671,7 @@ int main(int argc, char ** argv) { char ch, *configobj = "executor", *tmprootpath = NULL, *tmpunprivpath = NULL, *tmpunprivuser = NULL; json_error_t jsonerr; + int reconnect_ivl = 1000; while((ch = getopt(argc, argv, "vsdhc:")) != -1) { switch(ch) { @@ -720,25 +721,26 @@ int main(int argc, char ** argv) { #if ZMQ_VERSION_MAJOR < 4 if(json_unpack_ex(config, &jsonerr, 0, - "{s:{s?:o s:o s?i s?b s?b s?:o s?o s?s s?s s?s}}", + "{s:{s?:o s:o s?i s?b s?b s?:o s?o s?s s?s s?s s?i}}", configobj, "jobs", &jobs, "results", &results, "iothreads", &iothreads, "verbose", &verbose, "syslog", &usesyslog, "filter", &filter, "publisher", &publisher, "rootpath", &tmprootpath, - "unprivpath", &tmpunprivpath, "unprivuser", &tmpunprivuser) != 0) { + "unprivpath", &tmpunprivpath, "unprivuser", &tmpunprivuser, + "reconnect_ivl", &reconnect_ivl) != 0) { logit(ERR, "Error getting config %s", jsonerr.text); exit(-1); } #else if(json_unpack_ex(config, &jsonerr, 0, - "{s:{s?:o s:o s?i s?b s?b s?:o s?o s?s s?s s?s s?{s:s s:s s:s}}}", + "{s:{s?:o s:o s?i s?b s?b s?:o s?o s?s s?s s?s s?{s:s s:s s:s} s?i}}", configobj, "jobs", &jobs, "results", &results, "iothreads", &iothreads, "verbose", &verbose, "syslog", &usesyslog, "filter", &filter, "publisher", &publisher, "rootpath", &tmprootpath, "unprivpath", &tmpunprivpath, "unprivuser", &tmpunprivuser, "curve", "publickey", &curve_public, "privatekey", &curve_private, - "serverkey", &curve_server) != 0) { + "serverkey", &curve_server, "reconnect_ivl", &reconnect_ivl) != 0) { logit(ERR, "Error getting config: %s", jsonerr.text); exit(-1); } @@ -818,6 +820,9 @@ int main(int argc, char ** argv) { exit(-1); } + zmq_setsockopt(pullsock, ZMQ_RECONNECT_IVL, &reconnect_ivl, sizeof(int)); + zmq_setsockopt(pushsock, ZMQ_RECONNECT_IVL, &reconnect_ivl, sizeof(int)); + zmq_getsockopt(pullsock, ZMQ_FD, &pullfd, &pullfds); if(pullfd == -1) { logit(ERR, "Error getting fd for pullsock"); diff --git a/mods/common.c b/mods/common.c index 5563528..037c6b1 100644 --- a/mods/common.c +++ b/mods/common.c @@ -367,8 +367,6 @@ int rehash_keybags(struct keybaghash * o) { struct keybag * curkey = o->data[kiter], *savekey; while(curkey) { uint32_t hash = fnv_hash(curkey->key) & newsize; - if(hash == newsize) - hash -= 1; savekey = curkey->next; curkey->next = newdata[hash]; newdata[hash] = curkey; @@ -427,8 +425,6 @@ int read_keyfile(const char * path, struct keybaghash * o) { } uint32_t hashval = fnv_hash(nk->key) & o->buckets; - if(hashval == o->buckets) - hashval -= 1; nk->next = o->data[hashval]; o->data[hashval] = nk; @@ -477,7 +473,7 @@ int send_zap_resp(zmq_msg_t * reqid, char * code, char * text, void * zap_handler(void* zapsock) { struct keybaghash bag; bag.buckets = 63; - bag.data = calloc(63, sizeof(struct keybag*)); + bag.data = calloc(64, sizeof(struct keybag*)); bag.count = 0; time_t last_refresh = 0; int keeprunning = 1, i; @@ -544,8 +540,6 @@ void * zap_handler(void* zapsock) { uint32_t hashval = fnv_hash(creds); hashval &= bag.buckets; - if(hashval == bag.buckets) - hashval -= 1; struct keybag * search = bag.data[hashval];