aboutsummaryrefslogtreecommitdiffstats
path: root/src/mds-registry/slave.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-12-08 18:18:33 +0100
committerMattias Andrée <maandree@operamail.com>2014-12-08 18:18:33 +0100
commitece181226cd2d13585e09d708bfa679874ceee1a (patch)
tree1c16fb9dbd5cd64adae230a248cdc7aa90cd34a1 /src/mds-registry/slave.c
parentreplace all goto pfail with fail_if, so that we can take whence it failed (diff)
downloadmds-ece181226cd2d13585e09d708bfa679874ceee1a.tar.gz
mds-ece181226cd2d13585e09d708bfa679874ceee1a.tar.bz2
mds-ece181226cd2d13585e09d708bfa679874ceee1a.tar.xz
replace all variants of goto pfail with fail_if
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src/mds-registry/slave.c')
-rw-r--r--src/mds-registry/slave.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/mds-registry/slave.c b/src/mds-registry/slave.c
index 3825472..9999aa0 100644
--- a/src/mds-registry/slave.c
+++ b/src/mds-registry/slave.c
@@ -168,29 +168,28 @@ int start_slave(hash_table_t* restrict wait_set, const char* restrict recv_clien
slave_t* slave = slave_create(wait_set, recv_client_id, recv_message_id);
size_t slave_address, i;
ssize_t node = LINKED_LIST_UNUSED;
+ int locked = 0;
fail_if (slave == NULL);
fail_if ((errno = pthread_mutex_lock(&slave_mutex)));
+ locked = 1;
slave_address = (size_t)(void*)slave;
slave->node = node = linked_list_insert_end(&slave_list, slave_address);
- if (slave->node == LINKED_LIST_UNUSED)
- goto pfail_in_mutex;
+ fail_if (slave->node == LINKED_LIST_UNUSED);
for (i = 0; i < received.header_count; i++)
if (startswith(received.headers[i], "Time to live: "))
{
const char* ttl = received.headers[i] + strlen("Time to live: ");
slave->timed = 1;
- if (monotone(&(slave->dethklok)))
- goto pfail_in_mutex;
+ fail_if (monotone(&(slave->dethklok)));
slave->dethklok.tv_sec += (time_t)atoll(ttl);
- /* It should really be `atol`, but we want to be future proof. */
+ /* It should really be `atol`, but we want to be future-proof. */
break;
}
- if ((errno = pthread_create(&(slave->thread), NULL, slave_loop, (void*)(intptr_t)slave)))
- goto pfail_in_mutex;
+ fail_if ((errno = pthread_create(&(slave->thread), NULL, slave_loop, (void*)(intptr_t)slave)));
if ((errno = pthread_detach(slave->thread)))
xperror(*argv);
@@ -201,11 +200,8 @@ int start_slave(hash_table_t* restrict wait_set, const char* restrict recv_clien
return 0;
pfail:
xperror(*argv);
- goto more_fail;
- pfail_in_mutex:
- xperror(*argv);
- pthread_mutex_unlock(&slave_mutex);
- more_fail:
+ if (locked)
+ pthread_mutex_unlock(&slave_mutex);
if (node != LINKED_LIST_UNUSED)
linked_list_remove(&slave_list, node);
return -1;