@@ -215,17 +215,19 @@ void SocketAddress::set_port(uint16_t port)
215
215
216
216
const char *SocketAddress::get_ip_address () const
217
217
{
218
- char *ip_address = (char *)_ip_address;
218
+ if (_addr.version == NSAPI_UNSPEC) {
219
+ return NULL ;
220
+ }
219
221
220
- if (!ip_address [0 ]) {
222
+ if (!_ip_address [0 ]) {
221
223
if (_addr.version == NSAPI_IPv4) {
222
- ipv4_to_address (ip_address , _addr.bytes );
224
+ ipv4_to_address (_ip_address , _addr.bytes );
223
225
} else if (_addr.version == NSAPI_IPv6) {
224
- ipv6_to_address (ip_address , _addr.bytes );
226
+ ipv6_to_address (_ip_address , _addr.bytes );
225
227
}
226
228
}
227
229
228
- return ip_address ;
230
+ return _ip_address ;
229
231
}
230
232
231
233
const void *SocketAddress::get_ip_bytes () const
@@ -250,34 +252,38 @@ uint16_t SocketAddress::get_port() const
250
252
251
253
SocketAddress::operator bool () const
252
254
{
253
- int count = 0 ;
254
255
if (_addr.version == NSAPI_IPv4) {
255
- count = NSAPI_IPv4_BYTES;
256
- } else if (_addr.version == NSAPI_IPv6) {
257
- count = NSAPI_IPv6_BYTES;
258
- }
256
+ for (int i = 0 ; i < NSAPI_IPv4_BYTES; i++) {
257
+ if (_addr.bytes [i]) {
258
+ return true ;
259
+ }
260
+ }
259
261
260
- for (int i = 0 ; i < count; i++) {
261
- if (_addr.bytes [i]) {
262
- return true ;
262
+ return false ;
263
+ } else if (_addr.version == NSAPI_IPv6) {
264
+ for (int i = 0 ; i < NSAPI_IPv6_BYTES; i++) {
265
+ if (_addr.bytes [i]) {
266
+ return true ;
267
+ }
263
268
}
264
- }
265
269
266
- return false ;
270
+ return false ;
271
+ } else {
272
+ return false ;
273
+ }
267
274
}
268
275
269
276
bool operator ==(const SocketAddress &a, const SocketAddress &b)
270
277
{
271
- int count = 0 ;
272
- if (a._addr .version == NSAPI_IPv4 && b._addr .version == NSAPI_IPv4) {
273
- count = NSAPI_IPv4_BYTES;
274
- } else if (a._addr .version == NSAPI_IPv6 && b._addr .version == NSAPI_IPv6) {
275
- count = NSAPI_IPv6_BYTES;
276
- } else {
278
+ if (!a && !b) {
279
+ return true ;
280
+ } else if (a._addr .version != b._addr .version ) {
277
281
return false ;
282
+ } else if (a._addr .version == NSAPI_IPv4) {
283
+ return memcmp (a._addr .bytes , b._addr .bytes , NSAPI_IPv4_BYTES) == 0 ;
284
+ } else if (a._addr .version == NSAPI_IPv6) {
285
+ return memcmp (a._addr .bytes , b._addr .bytes , NSAPI_IPv6_BYTES) == 0 ;
278
286
}
279
-
280
- return (memcmp (a._addr .bytes , b._addr .bytes , count) == 0 );
281
287
}
282
288
283
289
bool operator !=(const SocketAddress &a, const SocketAddress &b)
0 commit comments