mirror of https://github.com/ARMmbed/mbed-os.git
Fixed incorrect semaphore handling on lwip connect and socket_connect
- Semaphore returns 0 on timeout, and negative was incorrect used for errors - Correctly checked error code on tcp_connect thanks to @LiyouZhou fixes #284, fixes #285, fixes #166
parent
3429d4e7f2
commit
d4bdb94781
|
@ -110,7 +110,7 @@ int LWIPInterface::connect()
|
|||
|
||||
// Wait for an IP Address
|
||||
// -1: error, 0: timeout
|
||||
if (netif_up.wait(2500) < 0) {
|
||||
if (netif_up.wait(2500) <= 0) {
|
||||
return NSAPI_ERROR_DHCP_FAILURE;
|
||||
}
|
||||
|
||||
|
@ -291,10 +291,10 @@ int LWIPInterface::socket_connect(void *handle, const SocketAddress &addr)
|
|||
Semaphore connected(0);
|
||||
s->sem = &connected;
|
||||
|
||||
tcp_connect(s->tcp, &ip_addr, addr.get_port(), tcp_connect_irq);
|
||||
err_t err = tcp_connect(s->tcp, &ip_addr, addr.get_port(), tcp_connect_irq);
|
||||
|
||||
// Wait for connection
|
||||
if (connected.wait(1500) < 0) {
|
||||
if (err || connected.wait(1500) <= 0) {
|
||||
return NSAPI_ERROR_NO_CONNECTION;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue