diff options
Diffstat (limited to 'src/network/core')
-rw-r--r-- | src/network/core/udp.c | 51 | ||||
-rw-r--r-- | src/network/core/udp.h | 4 |
2 files changed, 35 insertions, 20 deletions
diff --git a/src/network/core/udp.c b/src/network/core/udp.c index 2ae14d5fa..d688233b0 100644 --- a/src/network/core/udp.c +++ b/src/network/core/udp.c @@ -19,25 +19,6 @@ */ /** - * Send a packet over UDP - * @param udp the socket to send over - * @param p the packet to send - * @param recv the receiver (target) of the packet - */ -void NetworkSendUDP_Packet(SOCKET udp, Packet *p, struct sockaddr_in *recv) -{ - int res; - - NetworkSend_FillPacketSize(p); - - /* Send the buffer */ - res = sendto(udp, p->buffer, p->size, 0, (struct sockaddr *)recv, sizeof(*recv)); - - /* Check for any errors, but ignore it otherwise */ - if (res == -1) DEBUG(net, 1, "[udp] sendto failed with: %i", GET_LAST_ERROR()); -} - -/** * Start listening on the given host and port. * @param udp the place where the (references to the) UDP are stored * @param host the host (ip) to listen on @@ -92,6 +73,38 @@ bool NetworkUDPListen(SOCKET *udp, uint32 host, uint16 port, bool broadcast) } /** + * Close the given UDP socket + * @param udp the socket to close + */ +void NetworkUDPClose(SOCKET *udp) +{ + if (*udp == INVALID_SOCKET) return; + + closesocket(*udp); + *udp = INVALID_SOCKET; +} + + +/** + * Send a packet over UDP + * @param udp the socket to send over + * @param p the packet to send + * @param recv the receiver (target) of the packet + */ +void NetworkSendUDP_Packet(SOCKET udp, Packet *p, struct sockaddr_in *recv) +{ + int res; + + NetworkSend_FillPacketSize(p); + + /* Send the buffer */ + res = sendto(udp, p->buffer, p->size, 0, (struct sockaddr *)recv, sizeof(*recv)); + + /* Check for any errors, but ignore it otherwise */ + if (res == -1) DEBUG(net, 1, "[udp] sendto failed with: %i", GET_LAST_ERROR()); +} + +/** * Receive a packet at UDP level * @param udp the socket to receive the packet on */ diff --git a/src/network/core/udp.h b/src/network/core/udp.h index f927c289c..ab7682836 100644 --- a/src/network/core/udp.h +++ b/src/network/core/udp.h @@ -11,8 +11,10 @@ ///** Sending/receiving of UDP packets **//// -void NetworkSendUDP_Packet(SOCKET udp, Packet *p, struct sockaddr_in *recv); bool NetworkUDPListen(SOCKET *udp, uint32 host, uint16 port, bool broadcast); +void NetworkUDPClose(SOCKET *udp); + +void NetworkSendUDP_Packet(SOCKET udp, Packet *p, struct sockaddr_in *recv); void NetworkUDPReceive(SOCKET udp); /** |