| 764 | } |
| 765 | |
| 766 | int |
| 767 | lwip_send(int s, const void *data, size_t size, int flags) |
| 768 | { |
| 769 | struct lwip_sock *sock; |
| 770 | err_t err; |
| 771 | u8_t write_flags; |
| 772 | size_t written; |
| 773 | |
| 774 | LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_send(%d, data=%p, size=%"SZT_F", flags=0x%x)\n", |
| 775 | s, data, size, flags)); |
| 776 | |
| 777 | sock = get_socket(s); |
| 778 | if (!sock) { |
| 779 | return -1; |
| 780 | } |
| 781 | |
| 782 | if (sock->conn->type != NETCONN_TCP) { |
| 783 | #if (LWIP_UDP || LWIP_RAW) |
| 784 | return lwip_sendto(s, data, size, flags, NULL, 0); |
| 785 | #else /* (LWIP_UDP || LWIP_RAW) */ |
| 786 | sock_set_errno(sock, err_to_errno(ERR_ARG)); |
| 787 | return -1; |
| 788 | #endif /* (LWIP_UDP || LWIP_RAW) */ |
| 789 | } |
| 790 | |
| 791 | write_flags = NETCONN_COPY | |
| 792 | ((flags & MSG_MORE) ? NETCONN_MORE : 0) | |
| 793 | ((flags & MSG_DONTWAIT) ? NETCONN_DONTBLOCK : 0); |
| 794 | written = 0; |
| 795 | err = netconn_write_partly(sock->conn, data, size, write_flags, &written); |
| 796 | |
| 797 | LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_send(%d) err=%d written=%"SZT_F"\n", s, err, written)); |
| 798 | sock_set_errno(sock, err_to_errno(err)); |
| 799 | return (err == ERR_OK ? (int)written : -1); |
| 800 | } |
| 801 | |
| 802 | int |
| 803 | lwip_sendto(int s, const void *data, size_t size, int flags, |
no test coverage detected