@@ -221,17 +221,19 @@ void SocketAddress::set_port(uint16_t port)
221
221
222
222
const char *SocketAddress::get_ip_address () const
223
223
{
224
- char *ip_address = (char *)_ip_address;
224
+ if (_addr.version == NSAPI_UNSPEC) {
225
+ return NULL ;
226
+ }
225
227
226
- if (!ip_address [0 ]) {
228
+ if (!_ip_address [0 ]) {
227
229
if (_addr.version == NSAPI_IPv4) {
228
- ipv4_to_address (ip_address , _addr.bytes );
230
+ ipv4_to_address (_ip_address , _addr.bytes );
229
231
} else if (_addr.version == NSAPI_IPv6) {
230
- ipv6_to_address (ip_address , _addr.bytes );
232
+ ipv6_to_address (_ip_address , _addr.bytes );
231
233
}
232
234
}
233
235
234
- return ip_address ;
236
+ return _ip_address ;
235
237
}
236
238
237
239
const void *SocketAddress::get_ip_bytes () const
@@ -256,34 +258,38 @@ uint16_t SocketAddress::get_port() const
256
258
257
259
SocketAddress::operator bool () const
258
260
{
259
- int count = 0 ;
260
261
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
+ }
265
267
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
+ }
269
274
}
270
- }
271
275
272
- return false ;
276
+ return false ;
277
+ } else {
278
+ return false ;
279
+ }
273
280
}
274
281
275
282
bool operator ==(const SocketAddress &a, const SocketAddress &b)
276
283
{
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 ) {
283
287
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 ;
284
292
}
285
-
286
- return (memcmp (a._addr .bytes , b._addr .bytes , count) == 0 );
287
293
}
288
294
289
295
bool operator !=(const SocketAddress &a, const SocketAddress &b)
0 commit comments