#ifndef set_errno
#define set_errno(err) errno = (err)
#endif
-#else
+#else /* ERRNO */
#define set_errno(err)
-#endif
+#endif /* ERRNO */
#define sock_set_errno(sk, e) do { \
sk->err = (e); \
if (sock->conn->type != NETCONN_TCP) {
#if (LWIP_UDP || LWIP_RAW)
return lwip_sendto(s, data, size, flags, NULL, 0);
-#else
+#else /* (LWIP_UDP || LWIP_RAW) */
sock_set_errno(sock, err_to_errno(ERR_ARG));
return -1;
#endif /* (LWIP_UDP || LWIP_RAW) */
err_t err;
u16_t short_size;
const struct sockaddr_in *to_in;
+ u16_t remote_port;
#if !LWIP_TCPIP_CORE_LOCKING
struct netbuf buf;
- u16_t remote_port;
#endif
sock = get_socket(s);
if (sock->conn->type == NETCONN_TCP) {
#if LWIP_TCP
return lwip_send(s, data, size, flags);
-#else
+#else /* LWIP_TCP */
sock_set_errno(sock, err_to_errno(ERR_ARG));
return -1;
#endif /* LWIP_TCP */
p->payload = (void*)data;
#endif /* LWIP_NETIF_TX_SINGLE_PBUF */
- inet_addr_to_ipaddr_p(remote_addr, &to_in->sin_addr);
+ if (to_in != NULL) {
+ inet_addr_to_ipaddr_p(remote_addr, &to_in->sin_addr);
+ remote_port = ntohs(to_in->sin_port);
+ } else {
+ ip_addr_set_any(&remote_addr);
+ remote_port = 0;
+ }
LOCK_TCPIP_CORE();
if (sock->conn->type == NETCONN_RAW) {
} else {
#if LWIP_CHECKSUM_ON_COPY && LWIP_NETIF_TX_SINGLE_PBUF
err = sock->conn->last_err = udp_sendto_chksum(sock->conn->pcb.udp, p,
- remote_addr, ntohs(to_in->sin_port), 1, chksum);
+ remote_addr, remote_port, 1, chksum);
#else /* LWIP_CHECKSUM_ON_COPY && LWIP_NETIF_TX_SINGLE_PBUF */
err = sock->conn->last_err = udp_sendto(sock->conn->pcb.udp, p,
- remote_addr, ntohs(to_in->sin_port));
+ remote_addr, remote_port);
#endif /* LWIP_CHECKSUM_ON_COPY && LWIP_NETIF_TX_SINGLE_PBUF */
}
UNLOCK_TCPIP_CORE();
err = ERR_MEM;
}
}
-#else
+#else /* LWIP_TCPIP_CORE_LOCKING */
/* initialize a buffer */
buf.p = buf.ptr = NULL;
#if LWIP_CHECKSUM_ON_COPY