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
Christopher Haster 2016-06-09 23:46:03 -05:00
parent 3429d4e7f2
commit d4bdb94781
1 changed files with 3 additions and 3 deletions

View File

@ -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;
}