MCPcopy Create free account
hub / github.com/apache/thrift / socket_send

Function socket_send

lib/lua/src/usocket.c:209–240  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

207
208#define SEND_RETRY_COUNT 5
209T_ERRCODE socket_send(
210 p_socket sock, const char *data, size_t len, int timeout) {
211 int err, put = 0;
212 if (*sock < 0) {
213 return CLOSED;
214 }
215 for(int i = 0; i < SEND_RETRY_COUNT; i++) {
216 do {
217 size_t l = len - put;
218 put = send(*sock, data + put, l, 0);
219 if (put > 0) {
220 if(put == l) {
221 return SUCCESS;
222 }
223 // Not all data was delivered, we need to try again.
224 err = EAGAIN;
225 break;
226 }
227 } while ((err = errno) == EINTR);
228
229 if (err == EAGAIN) {
230 err = socket_wait(sock, WAIT_MODE_W, timeout);
231 // Check if the socket is available again and try to resend.
232 if(err == SUCCESS) {
233 continue;
234 }
235 }
236 break;
237 }
238
239 return err;
240}
241
242T_ERRCODE socket_recv(
243 p_socket sock, char *data, size_t len, int timeout, int *received) {

Callers 1

tcp_sendFunction · 0.85

Calls 1

socket_waitFunction · 0.85

Tested by

no test coverage detected