| 216 | } |
| 217 | |
| 218 | static int web_write_all(int fd, const void *buf, size_t len) { |
| 219 | const char *p = buf; |
| 220 | while (len) { |
| 221 | #ifdef MSG_NOSIGNAL |
| 222 | ssize_t n = send(fd, p, len, MSG_NOSIGNAL); |
| 223 | #else |
| 224 | ssize_t n = write(fd, p, len); |
| 225 | #endif |
| 226 | if (n < 0 && errno == EINTR) continue; |
| 227 | if (n <= 0) return -1; |
| 228 | p += n; |
| 229 | len -= (size_t)n; |
| 230 | } |
| 231 | return 0; |
| 232 | } |
| 233 | |
| 234 | static ssize_t web_read_some(int fd, char *buf, size_t len, int timeout_ms) { |
| 235 | struct pollfd pfd = {.fd = fd, .events = POLLIN}; |
no outgoing calls
no test coverage detected