diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-12-08 18:18:33 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-12-08 18:18:33 +0100 |
commit | ece181226cd2d13585e09d708bfa679874ceee1a (patch) | |
tree | 1c16fb9dbd5cd64adae230a248cdc7aa90cd34a1 /src/mds-registry/slave.c | |
parent | replace all goto pfail with fail_if, so that we can take whence it failed (diff) | |
download | mds-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.c | 20 |
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; |