Displaying 6 results from an estimated 6 matches for "sockwouldblock".
2015 Dec 10
2
[PATCH] Receive multiple packets at a time
...ncoming_vpn_packet(int sock, vpn_packet_t *pkt, sockaddr_t *from) {
char *hostname;
- sockaddr_t from;
- socklen_t fromlen = sizeof(from);
node_t *n;
- pkt.len = recvfrom(listen_socket[sock].udp, (char *) &pkt.seqno, MAXSIZE, 0, &from.sa, &fromlen);
-
- if(pkt.len < 0) {
- if(!sockwouldblock(sockerrno))
- logger(LOG_ERR, "Receiving packet failed: %s", sockstrerror(sockerrno));
- return;
- }
-
- sockaddrunmap(&from); /* Some braindead IPv6 implementations do stupid things. */
+ sockaddrunmap(from); /* Some braindead IPv6 implementations do stupid things. */
- n = lo...
2015 Dec 10
0
[PATCH] Receive multiple packets at a time
...i];
msg[i].msg_hdr.msg_iovlen = 1;
msg[i].msg_hdr.msg_control = NULL;
msg[i].msg_hdr.msg_controllen = 0;
}
num = recvmmsg(listen_socket[sock].udp, msg, MAX_MSG, MSG_DONTWAIT, NULL);
if(num < 0)
{
if(!sockwouldblock(sockerrno))
logger(LOG_ERR, "Receiving packet failed: %s", sockstrerror(sockerrno));
return;
}
for(i = 0; i < num; i++)
{
pkt[i].len = msg[i].msg_len;
if(pkt[i].len <= 0 || pkt[i].len &g...
2015 Dec 02
5
[PATCH] Receive multiple packets at a time
...recvmmsg(ls->udp.fd, msg, MAX_MSG, MSG_DONTWAIT, NULL);
+#else
+ pkt[0].offset = 0;
+ int len = recvfrom(ls->udp.fd, DATA(&pkt[0]), MAXSIZE, 0, &addr[0].sa, &addrlen);
+#endif
+
+#ifdef HAVE_RECVMMSG
+ if(num < 0)
+#else
+ if(len <= 0 || len > MAXSIZE)
+#endif
+ {
if(!sockwouldblock(sockerrno))
logger(DEBUG_ALWAYS, LOG_ERR, "Receiving packet failed: %s", sockstrerror(sockerrno));
return;
}
- pkt.len = len;
-
- sockaddrunmap(&addr); /* Some braindead IPv6 implementations do stupid things. */
-
- // Try to figure out who sent this packet.
-
- node_t *n =...
2010 Sep 20
0
No subject
...npkt->flag_bits =3D htonl(inpkt->flag_bits);
=20
/* Determine which socket we have to use */
=20
@@ -506,7 +519,7 @@
}
#endif
=20
- if(sendto(listen_socket[sock].udp, (char *) &inpkt->seqno, inpkt->len, =
0, &(n->address.sa), SALEN(n->address.sa)) < 0 && =
!sockwouldblock(sockerrno)) {
+ if(sendto(listen_socket[sock].udp, (char *) &inpkt->flags, inpkt->len, =
0, &(n->address.sa), SALEN(n->address.sa)) < 0 && =
!sockwouldblock(sockerrno)) {
if(sockmsgsize(sockerrno)) {
if(n->maxmtu >=3D origlen)
n->maxmtu =3D origle...
2015 Dec 02
0
[PATCH] Receive multiple packets at a time
...> + int len = recvfrom(ls->udp.fd, DATA(&pkt[0]), MAXSIZE, 0, &addr[0].sa, &addrlen);
> +#endif
> +
> +#ifdef HAVE_RECVMMSG
> + if(num < 0)
> +#else
> + if(len <= 0 || len > MAXSIZE)
> +#endif
> + {
> if(!sockwouldblock(sockerrno))
> logger(DEBUG_ALWAYS, LOG_ERR, "Receiving packet failed: %s", sockstrerror(sockerrno));
> return;
> }
>
> - pkt.len = len;
> -
> - sockaddrunmap(&addr); /* Some braindead IPv6 implementations...
2011 Jan 03
1
Tinc improvements
...nt sock) {
@@ -606,7 +615,7 @@
socklen_t fromlen = sizeof(from);
node_t *n;
- pkt.len = recvfrom(sock, (char *) &pkt.seqno, MAXSIZE, 0, &from.sa, &fromlen);
+ pkt.len = recvfrom(sock, (char *) &pkt.flags, MAXSIZE, 0, &from.sa, &fromlen);
if(pkt.len < 0) {
if(!sockwouldblock(sockerrno))