From ad1c231398454164dd8a35de18978f7e84d98865 Mon Sep 17 00:00:00 2001 From: Dan Staples Date: Tue, 1 Apr 2014 09:42:40 -0400 Subject: [PATCH] Attempt to fetch SAS key multiple times before giving up --- commotion-service-manager.c | 9 +++++++-- commotion-service-manager.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/commotion-service-manager.c b/commotion-service-manager.c index a04b4ef..fd65e6f 100644 --- a/commotion-service-manager.c +++ b/commotion-service-manager.c @@ -240,7 +240,7 @@ int verify_announcement(ServiceInfo *i) { char *key, *val, *app, *uri, *icon, *desc, *sid, *sig; unsigned int ttl = 0; unsigned long lifetime = 0; - int j, verdict = 1, to_verify_len = 0; + int j, verdict = 1, to_verify_len = 0, found = 0; size_t val_len; assert(i->txt_lst); @@ -299,7 +299,12 @@ int verify_announcement(ServiceInfo *i) { if (to_verify) { char sas_buf[2*SAS_SIZE+1] = {0}; - CHECK(keyring_send_sas_request_client(sid,strlen(sid),sas_buf,2*SAS_SIZE+1),"Failed to fetch signing key"); + for (j = 0; j < SAS_FETCH_MAX_ATTEMPTS; j++) { + found = keyring_send_sas_request_client(sid,strlen(sid),sas_buf,2*SAS_SIZE+1); + if (found) + break; + } + CHECK(found,"Failed to fetch signing key"); bool output; CHECK((co_conn = co_connect(arguments.co_sock,strlen(arguments.co_sock)+1)),"Failed to connect to Commotion socket"); diff --git a/commotion-service-manager.h b/commotion-service-manager.h index 728c5be..212b1b6 100644 --- a/commotion-service-manager.h +++ b/commotion-service-manager.h @@ -47,6 +47,7 @@ #endif #define DEFAULT_CO_SOCK "/var/run/commotiond.sock" +#define SAS_FETCH_MAX_ATTEMPTS 5 struct arguments { char *co_sock;