From d488f02f5e93cefd4af1f3d78cf7460b82ca50a9 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Sun, 13 Mar 2016 16:55:34 -0500 Subject: [PATCH] Move to SocketAddress in gethostbyname --- net/NetworkSocketAPI/NetworkInterface.cpp | 11 +++++++++-- net/NetworkSocketAPI/NetworkInterface.h | 4 ++-- net/NetworkSocketAPI/SocketAddress.cpp | 4 +--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/net/NetworkSocketAPI/NetworkInterface.cpp b/net/NetworkSocketAPI/NetworkInterface.cpp index 455d3ddf3b..39ccdd69ff 100644 --- a/net/NetworkSocketAPI/NetworkInterface.cpp +++ b/net/NetworkSocketAPI/NetworkInterface.cpp @@ -17,7 +17,14 @@ #include "DnsQuery.h" #include "mbed.h" -int NetworkInterface::gethostbyname(const char *name, char *dest) +int NetworkInterface::gethostbyname(SocketAddress *address, const char *name) { - return dnsQuery(this, name, dest); + char buffer[NSAPI_IP_SIZE]; + int err = dnsQuery(this, name, buffer); + if (err) { + return err; + } + + address->set_ip_address(buffer); + return 0; } diff --git a/net/NetworkSocketAPI/NetworkInterface.h b/net/NetworkSocketAPI/NetworkInterface.h index 76fac217e5..da002f6d7e 100644 --- a/net/NetworkSocketAPI/NetworkInterface.h +++ b/net/NetworkSocketAPI/NetworkInterface.h @@ -87,11 +87,11 @@ public: } /** Looks up the specified host's IP address + * @param address Destination for the host SocketAddress * @param name Hostname to lookup - * @param dest Destination for IP address, must have space for SocketAddress::IP_SIZE * @return 0 on success, negative on failure */ - virtual int gethostbyname(const char *name, char *dest); + virtual int gethostbyname(SocketAddress *address, const char *name); protected: friend class Socket; diff --git a/net/NetworkSocketAPI/SocketAddress.cpp b/net/NetworkSocketAPI/SocketAddress.cpp index af65723ff4..e8251a7c1b 100644 --- a/net/NetworkSocketAPI/SocketAddress.cpp +++ b/net/NetworkSocketAPI/SocketAddress.cpp @@ -98,10 +98,8 @@ SocketAddress::SocketAddress(NetworkInterface *iface, const char *host, uint16_t address_to_ipv4(_ip_bytes, host); } else { // DNS lookup - char addr[NSAPI_IP_SIZE]; - int err = iface->gethostbyname(host, addr); + int err = iface->gethostbyname(this, host); if (!err) { - set_ip_address(addr); set_port(port); } else { _ip_version = NSAPI_IPv4;