From a9cb29c46b7cdec64ff4c8463da90388d4889e70 Mon Sep 17 00:00:00 2001 From: smlng Date: Thu, 15 Dec 2016 16:57:55 +0100 Subject: [PATCH] gnrc_sock_udp: optimized remote ep handling --- sys/net/gnrc/sock/udp/gnrc_sock_udp.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/sys/net/gnrc/sock/udp/gnrc_sock_udp.c b/sys/net/gnrc/sock/udp/gnrc_sock_udp.c index e46c39ebf3..0ac4026b0f 100644 --- a/sys/net/gnrc/sock/udp/gnrc_sock_udp.c +++ b/sys/net/gnrc/sock/udp/gnrc_sock_udp.c @@ -217,7 +217,7 @@ ssize_t sock_udp_send(sock_udp_t *sock, const void *data, size_t len, gnrc_pktsnip_t *payload, *pkt; uint16_t src_port = 0, dst_port; sock_ip_ep_t local; - sock_ip_ep_t rem; + sock_ip_ep_t *rem; assert((sock != NULL) || (remote != NULL)); assert((len == 0) || (data != NULL)); /* (len != 0) => (data != NULL) */ @@ -275,21 +275,18 @@ ssize_t sock_udp_send(sock_udp_t *sock, const void *data, size_t len, } /* sock can't be NULL at this point */ if (remote == NULL) { - memcpy(&rem, &sock->remote, sizeof(rem)); + rem = (sock_ip_ep_t *)&sock->remote; dst_port = sock->remote.port; } else { - memcpy(&rem, remote, sizeof(rem)); + rem = (sock_ip_ep_t *)remote; dst_port = remote->port; } /* check for matching address families in local and remote */ - if ((local.family == AF_UNSPEC) && (rem.family != AF_UNSPEC)) { - local.family = rem.family; + if (local.family == AF_UNSPEC) { + local.family = rem->family; } - else if ((local.family != AF_UNSPEC) && (rem.family == AF_UNSPEC)) { - rem.family = local.family; - } - else if (local.family != rem.family) { + else if (local.family != rem->family) { return -EINVAL; } /* generate payload and header snips */ @@ -302,7 +299,7 @@ ssize_t sock_udp_send(sock_udp_t *sock, const void *data, size_t len, gnrc_pktbuf_release(payload); return -ENOMEM; } - res = gnrc_sock_send(pkt, &local, &rem, PROTNUM_UDP); + res = gnrc_sock_send(pkt, &local, rem, PROTNUM_UDP); if (res > 0) { res -= sizeof(udp_hdr_t); }