- Avoid a call to the protected method `get_stack()` which cause a build fail.
- Remove the constructor definition `TCPServer(NetworkStack *stack)`
because it has no implementation.
- Corrected handling, before errors would forcibly restart the
accept loop without checks for timeouts
- Rearranged accept logic to match the logic of
recv/send/recvfrom/sendto
To avoid complications with unexpected IP versions, the wanted
IP version was added as an extra argument to DNS query functions
(defaults to NSAPI_IPv4).
Internal API changes:
m nsapi_dns_query
m nsapi_dns_query_multiple
Interestingly, though multiple questions can be encoded in a single
DNS packet, few, if any, nameservers respect any but the first
question. This makes support for coelescing DNS queries useless.
Internal API changes:
+ nsapi_dns_query_multiple
Note, dns_query_multiple takes a buffer of nsapi_addr_t to fill. This is
less dynamic than the linked-list method used in linux's gethostbyname,
but is easier to manage and more constrained.
Internal API changes:
dnsQuery -> nsapi_dns_query
Additionally restructured query code to emit/parse network structures
in stream form to hopefully document the underlying structure more
explicitly.
Additionally, the following changes were don to avoid combinatorial
explosion in function overloads as a result of adding cv-qualifiers:
- Added convenience function for inferred type
- Deprecated callback overloads qhere cv-qualifiers are not scalable
Supported overloads:
callback(void (*f)(A...));
callback(const Callback<R(A...)> &);
callback(T *t, void (*f)(T*, A...));
callback(const T *t, void (*f)(const T*, A...));
callback(volatile T *t, void (*f)(volatile T*, A...));
callback(const volatile T *t, void (*f)(const volatile T*, A...));
callback(T *t, void (T::*f)(A...));
callback(const T *t, void (T::*f)(A...) const);
callback(volatile T *t, void (T::*f)(A...) volatile);
callback(const volatile T *t, void (T::*f)(A...) const volatile);
Fixes issue #2399 by optionally returning a SocketAddress from
TCPServer::accept().
This entails changes to underlying NetworkStack and nsapi. This
commit deals only with lwip and higher level APIs; other users of
NetworkStack and nsapi may be affected. Currently lwip is the only
in-tree user of nsapi.
Currently this uses the same mechanism used by the rtos to conditionally
include the network-socket API. Perhaps this should be builtin to the
config system?
Note: this does require that the bug-compatible inclusion of mbed.h
be removed to avoid include-order issues.
per @sg-
Expression needed to init to zero a simple POD struct
Before (valid in C99/C++11/G++): (nsapi_addr_t){}
After (valid in C++03, invalid in C): nsapi_addr_t()