Skip to content

SocketRecv

Description

Blocking read from a connected socket.

Parameters

Name Direction Description
self in Socket to read from.
buf out Destination buffer.
n in Capacity of buf.

Success

returns number of bytes read (0 means peer closed).

Failure

returns -1; logs the failing syscall.

Usage example (Cross-references)

Usage examples (Cross-references)
    
        char buf[64];
        i64  got = SocketRecv(&server, buf, sizeof(buf));
        bool ok  = got == (i64)n && MemCompare(buf, payload, n) == 0;
    }
    
    i64 SocketRecv(Socket *self, void *buf, size n) {
        if (!self || !buf) {
            LOG_ERROR("SocketRecv: NULL argument");
    i64 SocketRecv(Socket *self, void *buf, size n) {
        if (!self || !buf) {
            LOG_ERROR("SocketRecv: NULL argument");
            return -1;
        }
        ssize_t ret = recv(self->fd, buf, (size_t)n, 0);
        if (ret < 0) {
            LOG_SYS_ERROR("SocketRecv: recv() failed");
            return -1;
        }
    
            if (items[0].events_ready & SOCKET_POLL_READ) {
                i64 n = SocketRecv(a, buf, sizeof(buf));
                if (n <= 0) {
                    return;
            }
            if (items[1].events_ready & SOCKET_POLL_READ) {
                i64 n = SocketRecv(b, buf, sizeof(buf));
                if (n <= 0) {
                    return;
        // Read the first chunk so we can log the request line.
        char first[4096];
        i64  first_n = SocketRecv(client, first, sizeof(first));
        if (first_n <= 0) {
            SocketClose(&upstream);
Last updated on