@@ -221,17 +221,19 @@ void SocketAddress::set_port(uint16_t port)
221221
222222const char *SocketAddress::get_ip_address () const
223223{
224- char *ip_address = (char *)_ip_address;
224+ if (_addr.version == NSAPI_UNSPEC) {
225+ return NULL ;
226+ }
225227
226- if (!ip_address [0 ]) {
228+ if (!_ip_address [0 ]) {
227229 if (_addr.version == NSAPI_IPv4) {
228- ipv4_to_address (ip_address , _addr.bytes );
230+ ipv4_to_address (_ip_address , _addr.bytes );
229231 } else if (_addr.version == NSAPI_IPv6) {
230- ipv6_to_address (ip_address , _addr.bytes );
232+ ipv6_to_address (_ip_address , _addr.bytes );
231233 }
232234 }
233235
234- return ip_address ;
236+ return _ip_address ;
235237}
236238
237239const void *SocketAddress::get_ip_bytes () const
@@ -256,34 +258,38 @@ uint16_t SocketAddress::get_port() const
256258
257259SocketAddress::operator bool () const
258260{
259- int count = 0 ;
260261 if (_addr.version == NSAPI_IPv4) {
261- count = NSAPI_IPv4_BYTES;
262- } else if (_addr.version == NSAPI_IPv6) {
263- count = NSAPI_IPv6_BYTES;
264- }
262+ for (int i = 0 ; i < NSAPI_IPv4_BYTES; i++) {
263+ if (_addr.bytes [i]) {
264+ return true ;
265+ }
266+ }
265267
266- for (int i = 0 ; i < count; i++) {
267- if (_addr.bytes [i]) {
268- return true ;
268+ return false ;
269+ } else if (_addr.version == NSAPI_IPv6) {
270+ for (int i = 0 ; i < NSAPI_IPv6_BYTES; i++) {
271+ if (_addr.bytes [i]) {
272+ return true ;
273+ }
269274 }
270- }
271275
272- return false ;
276+ return false ;
277+ } else {
278+ return false ;
279+ }
273280}
274281
275282bool operator ==(const SocketAddress &a, const SocketAddress &b)
276283{
277- int count = 0 ;
278- if (a._addr .version == NSAPI_IPv4 && b._addr .version == NSAPI_IPv4) {
279- count = NSAPI_IPv4_BYTES;
280- } else if (a._addr .version == NSAPI_IPv6 && b._addr .version == NSAPI_IPv6) {
281- count = NSAPI_IPv6_BYTES;
282- } else {
284+ if (!a && !b) {
285+ return true ;
286+ } else if (a._addr .version != b._addr .version ) {
283287 return false ;
288+ } else if (a._addr .version == NSAPI_IPv4) {
289+ return memcmp (a._addr .bytes , b._addr .bytes , NSAPI_IPv4_BYTES) == 0 ;
290+ } else if (a._addr .version == NSAPI_IPv6) {
291+ return memcmp (a._addr .bytes , b._addr .bytes , NSAPI_IPv6_BYTES) == 0 ;
284292 }
285-
286- return (memcmp (a._addr .bytes , b._addr .bytes , count) == 0 );
287293}
288294
289295bool operator !=(const SocketAddress &a, const SocketAddress &b)
0 commit comments