From 699f04dc754ef3545ae217ab1879731f2595ae0d Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 28 Dec 2008 03:01:38 +0000 Subject: some memory erros fixed added udp_read and udp_write --- src/udp.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/udp.c') diff --git a/src/udp.c b/src/udp.c index 70375c2..c2c7c79 100644 --- a/src/udp.c +++ b/src/udp.c @@ -66,6 +66,7 @@ void udp_init(udp_socket_t** sock, const char* local_addr, const char* port) return; } + memset(&((*sock)->remote_end_), 0, sizeof((*sock)->local_end_)); memcpy(&((*sock)->local_end_), res->ai_addr, sizeof(*(res->ai_addr))); (*sock)->fd_ = socket(res->ai_family, SOCK_DGRAM, 0); if((*sock)->fd_ < 0) { @@ -162,12 +163,13 @@ char* udp_get_remote_end_string(udp_socket_t* sock) return udp_endpoint_to_string(sock->remote_end_); } -int udp_read(udp_socket_t* sock, u_int8_t* buf, u_int32_t len, struct sockaddr_storage* remote_end_) +int udp_read(udp_socket_t* sock, u_int8_t* buf, u_int32_t len, struct sockaddr_storage* remote_end) { - if(!sock || !remote_end_) + if(!sock || !remote_end) return -1; - return 0; + int socklen = sizeof(*remote_end); + return recvfrom(sock->fd_, buf, len, 0, (struct sockaddr *)remote_end, &socklen); } int udp_write(udp_socket_t* sock, u_int8_t* buf, u_int32_t len) @@ -175,6 +177,6 @@ int udp_write(udp_socket_t* sock, u_int8_t* buf, u_int32_t len) if(!sock) return -1; - return 0; + return sendto(sock->fd_, buf, len, 0, (struct sockaddr *)&(sock->remote_end_), sizeof(sock->remote_end_));; } -- cgit v1.2.3