6 #include <dragonnet/recv.h>
8 void dragonnet_recv_raw(DragonnetPeer *p, void *buf, size_t n)
10 pthread_rwlock_rdlock(&p->mu);
12 pthread_rwlock_unlock(&p->mu);
14 ssize_t len = recv(sock, buf, n, MSG_WAITALL);
17 dragonnet_peer_delete(p);
23 pthread_rwlock_wrlock(&p->mu);
29 pthread_rwlock_unlock(&p->mu);
33 void dragonnet_read_raw(u8 **buf, size_t *n, void *data, size_t len)
35 memcpy(data, *buf, len);
36 memcpy(*buf, &((*buf)[len]), -len + *n);
38 *buf = realloc(*buf, -len + *n);