172 |
if(sock == NULL) { |
if(sock == NULL) { |
173 |
return -1; |
return -1; |
174 |
} |
} |
175 |
|
|
176 |
remote_addr.addr = ((struct sockaddr_in *)name)->sin_addr.s_addr; |
if (((struct sockaddr_in *)name)->sin_family == AF_UNSPEC) { |
177 |
remote_port = ((struct sockaddr_in *)name)->sin_port; |
err = netconn_disconnect(sock->conn); |
178 |
|
} else { |
179 |
err = netconn_connect(sock->conn, &remote_addr, ntohs(remote_port)); |
remote_addr.addr = ((struct sockaddr_in *)name)->sin_addr.s_addr; |
180 |
|
remote_port = ((struct sockaddr_in *)name)->sin_port; |
181 |
|
err = netconn_connect(sock->conn, &remote_addr, ntohs(remote_port)); |
182 |
|
} |
183 |
|
|
184 |
if(err != ERR_OK) { |
if(err != ERR_OK) { |
185 |
/* errno = ... */ |
/* errno = ... */ |
346 |
struct lwip_socket *sock; |
struct lwip_socket *sock; |
347 |
struct ip_addr remote_addr, *addr; |
struct ip_addr remote_addr, *addr; |
348 |
u16_t remote_port, port; |
u16_t remote_port, port; |
349 |
int ret; |
int ret,connected; |
350 |
|
|
351 |
sock = get_socket(s); |
sock = get_socket(s); |
352 |
if(sock == NULL) { |
if(sock == NULL) { |
354 |
} |
} |
355 |
|
|
356 |
/* get the peer if currently connected */ |
/* get the peer if currently connected */ |
357 |
netconn_peer(sock->conn, &addr, &port); |
connected = (netconn_peer(sock->conn, &addr, &port) == ERR_OK); |
358 |
|
|
359 |
remote_addr.addr = ((struct sockaddr_in *)to)->sin_addr.s_addr; |
remote_addr.addr = ((struct sockaddr_in *)to)->sin_addr.s_addr; |
360 |
remote_port = ((struct sockaddr_in *)to)->sin_port; |
remote_port = ((struct sockaddr_in *)to)->sin_port; |
364 |
|
|
365 |
/* reset the remote address and port number |
/* reset the remote address and port number |
366 |
of the connection */ |
of the connection */ |
367 |
netconn_connect(sock->conn, addr, port); |
if (connected) |
368 |
|
netconn_connect(sock->conn, addr, port); |
369 |
|
else |
370 |
|
netconn_disconnect(sock->conn); |
371 |
return ret; |
return ret; |
372 |
} |
} |
373 |
/*-----------------------------------------------------------------------------------*/ |
/*-----------------------------------------------------------------------------------*/ |