2 #include <dragontype/number.h>
9 #include "recv_thread.h"
11 void *dragonnet_peer_recv_thread(void *g_peer)
13 DragonnetPeer *p = (DragonnetPeer *) g_peer;
15 pthread_rwlock_wrlock(&p->mu);
16 assert(p->state == DRAGONNET_PEER_CREATED);
18 pthread_rwlock_unlock(&p->mu);
23 // Copy socket fd so that shutdown doesn't block
24 pthread_rwlock_rdlock(&p->mu);
26 pthread_rwlock_unlock(&p->mu);
28 ssize_t len = recv(sock, &msg, sizeof msg, MSG_WAITALL);
32 dragonnet_peer_delete(p);
38 pthread_rwlock_wrlock(&p->mu);
44 pthread_rwlock_unlock(&p->mu);