/[lwip]/lwip/src/api/sockets.c
ViewVC logotype

Diff of /lwip/src/api/sockets.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by likewise, Wed Jan 8 10:09:40 2003 UTC revision 1.4 by jani, Wed Jan 22 16:18:05 2003 UTC
# Line 172  lwip_connect(int s, struct sockaddr *nam Line 172  lwip_connect(int s, struct sockaddr *nam
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 = ... */
# Line 343  lwip_sendto(int s, void *data, int size, Line 346  lwip_sendto(int s, void *data, int size,
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) {
# Line 351  lwip_sendto(int s, void *data, int size, Line 354  lwip_sendto(int s, void *data, int size,
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;
# Line 361  lwip_sendto(int s, void *data, int size, Line 364  lwip_sendto(int s, void *data, int size,
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  /*-----------------------------------------------------------------------------------*/  /*-----------------------------------------------------------------------------------*/

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26