MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / lwip_send

Function lwip_send

components/net/lwip/lwip-2.1.2/src/api/sockets.c:1403–1441  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1401}
1402
1403ssize_t
1404lwip_send(int s, const void *data, size_t size, int flags)
1405{
1406 struct lwip_sock *sock;
1407 err_t err;
1408 u8_t write_flags;
1409 size_t written;
1410
1411 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_send(%d, data=%p, size=%"SZT_F", flags=0x%x)\n",
1412 s, data, size, flags));
1413
1414 sock = get_socket(s);
1415 if (!sock) {
1416 return -1;
1417 }
1418
1419 if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) {
1420#if (LWIP_UDP || LWIP_RAW)
1421 done_socket(sock);
1422 return lwip_sendto(s, data, size, flags, NULL, 0);
1423#else /* (LWIP_UDP || LWIP_RAW) */
1424 sock_set_errno(sock, err_to_errno(ERR_ARG));
1425 done_socket(sock);
1426 return -1;
1427#endif /* (LWIP_UDP || LWIP_RAW) */
1428 }
1429
1430 write_flags = (u8_t)(NETCONN_COPY |
1431 ((flags & MSG_MORE) ? NETCONN_MORE : 0) |
1432 ((flags & MSG_DONTWAIT) ? NETCONN_DONTBLOCK : 0));
1433 written = 0;
1434 err = netconn_write_partly(sock->conn, data, size, write_flags, &written);
1435
1436 LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_send(%d) err=%d written=%"SZT_F"\n", s, err, written));
1437 sock_set_errno(sock, err_to_errno(err));
1438 done_socket(sock);
1439 /* casting 'written' to ssize_t is OK here since the netconn API limits it to SSIZE_MAX */
1440 return (err == ERR_OK ? (ssize_t)written : -1);
1441}
1442
1443ssize_t
1444lwip_sendmsg(int s, const struct msghdr *msg, int flags)

Callers 5

lwip_sendtoFunction · 0.70
lwip_writeFunction · 0.70
START_TESTFunction · 0.50
tcp_client_entryFunction · 0.50
tcp_server_entryFunction · 0.50

Calls 6

done_socketFunction · 0.85
get_socketFunction · 0.70
netconn_typeEnum · 0.70
lwip_sendtoFunction · 0.70
err_to_errnoFunction · 0.70
netconn_write_partlyFunction · 0.70

Tested by 1

START_TESTFunction · 0.40