summaryrefslogtreecommitdiff
path: root/src/ipcpd/ipcp.c
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@intec.ugent.be>2016-12-27 19:18:06 +0100
committerdimitri staessens <dimitri.staessens@intec.ugent.be>2016-12-27 19:18:06 +0100
commit0324479318e76cecbe70b274cf2ab3479fe6f437 (patch)
tree708bea2e2d6b433fe806de3e8d0941b45ded3a84 /src/ipcpd/ipcp.c
parent7a286471720aca037ea001f052630c16044198ee (diff)
downloadouroboros-0324479318e76cecbe70b274cf2ab3479fe6f437.tar.gz
ouroboros-0324479318e76cecbe70b274cf2ab3479fe6f437.zip
ipcpd: Simplify ipcp_wait_state implementation
Diffstat (limited to 'src/ipcpd/ipcp.c')
-rw-r--r--src/ipcpd/ipcp.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index 8bd2ba77..fdf3a340 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -143,6 +143,7 @@ int ipcp_wait_state(enum ipcp_state state,
const struct timespec * timeout)
{
struct timespec abstime;
+ int ret = 0;
clock_gettime(PTHREAD_COND_CLOCK, &abstime);
ts_add(&abstime, timeout, &abstime);
@@ -150,23 +151,18 @@ int ipcp_wait_state(enum ipcp_state state,
pthread_mutex_lock(&ipcpi.state_mtx);
while (ipcpi.state != state && ipcpi.state != IPCP_SHUTDOWN) {
- int ret;
if (timeout == NULL)
- ret = pthread_cond_wait(&ipcpi.state_cond,
- &ipcpi.state_mtx);
+ ret = -pthread_cond_wait(&ipcpi.state_cond,
+ &ipcpi.state_mtx);
else
- ret = pthread_cond_timedwait(&ipcpi.state_cond,
- &ipcpi.state_mtx,
- &abstime);
- if (ret) {
- pthread_mutex_unlock(&ipcpi.state_mtx);
- return -ret;
- }
+ ret = -pthread_cond_timedwait(&ipcpi.state_cond,
+ &ipcpi.state_mtx,
+ &abstime);
}
pthread_mutex_unlock(&ipcpi.state_mtx);
- return 0;
+ return ret;
}
int ipcp_parse_arg(int argc, char * argv[])