| 1035 | } |
| 1036 | |
| 1037 | int net_udp_recv(NETSOCKET sock, NETADDR *addr, void *data, int maxsize) |
| 1038 | { |
| 1039 | char sockaddrbuf[128]; |
| 1040 | socklen_t fromlen;// = sizeof(sockaddrbuf); |
| 1041 | int bytes = 0; |
| 1042 | |
| 1043 | if(bytes == 0 && sock.ipv4sock >= 0) |
| 1044 | { |
| 1045 | fromlen = sizeof(struct sockaddr_in); |
| 1046 | bytes = recvfrom(sock.ipv4sock, (char*)data, maxsize, 0, (struct sockaddr *)&sockaddrbuf, &fromlen); |
| 1047 | } |
| 1048 | |
| 1049 | if(bytes <= 0 && sock.ipv6sock >= 0) |
| 1050 | { |
| 1051 | fromlen = sizeof(struct sockaddr_in6); |
| 1052 | bytes = recvfrom(sock.ipv6sock, (char*)data, maxsize, 0, (struct sockaddr *)&sockaddrbuf, &fromlen); |
| 1053 | } |
| 1054 | |
| 1055 | if(bytes > 0) |
| 1056 | { |
| 1057 | sockaddr_to_netaddr((struct sockaddr *)&sockaddrbuf, addr); |
| 1058 | network_stats.recv_bytes += bytes; |
| 1059 | network_stats.recv_packets++; |
| 1060 | return bytes; |
| 1061 | } |
| 1062 | else if(bytes == 0) |
| 1063 | return 0; |
| 1064 | return -1; /* error */ |
| 1065 | } |
| 1066 | |
| 1067 | int net_udp_close(NETSOCKET sock) |
| 1068 | { |
nothing calls this directly
no test coverage detected