- if (setsockopt(p->sock, SOL_SOCKET, SO_SNDTIMEO, &dragonnet_timeout,
- sizeof dragonnet_timeout) < 0) {
- perror("setsockopt");
- dragonnet_peer_delete(p);
+static DragonnetPeer *dragonnet_peer_accept(int sock, struct sockaddr_in6 addr,
+ DragonnetListener *l)
+{
+ DragonnetPeer *p = malloc(sizeof *p);
+ if (!dragonnet_peer_init_accepted(p, sock, addr, l)) {
+ pthread_mutex_destroy(&p->mtx);
+ free(p);