FreeBSD Manual Pages
HTTP_RECVREQUEST(3) libdill Library Functions HTTP_RECVREQUEST(3) NAME http_recvrequest - receives HTTP request from the peer SYNOPSIS #include <libdill.h> int http_recvrequest( int s, char* command, size_t commandlen, char* resource, size_t resourcelen, int64_t deadline); DESCRIPTION WARNING: This is experimental functionality and the API may change in the future. HTTP is an application-level protocol described in RFC 7230. This im- plementation handles only the request/response exchange. Whatever comes after that must be handled by a different protocol. This function receives an HTTP request from the peer. s: HTTP socket handle. command: Buffer to store HTTP command in. commandlen: Size of the command buffer. resource: Buffer to store HTTP resource in. resourcelen: Size of the resource buffer. deadline: A point in time when the operation should time out, in mil- liseconds. Use the now function to get your current point in time. 0 means immediate timeout, i.e., perform the operation if possible or re- turn without blocking if not. -1 means no deadline, i.e., the call will block forever if the operation cannot be performed. This function is not available if libdill is compiled with --dis- able-sockets option. RETURN VALUE In case of success the function returns 0. In case of error it returns -1 and sets errno to one of the values below. ERRORS • EBADF: Invalid handle. • ECANCELED: Current coroutine was canceled. • ECONNRESET: Broken connection. • EINVAL: Invalid argument. • EMSGSIZE: The data won't fit into the supplied buffer. • ENOTSUP: The handle does not support this operation. • ETIMEDOUT: Deadline was reached. EXAMPLE int s = tcp_accept(listener, NULL, -1); s = http_attach(s, -1); char command[256]; char resource[256]; http_recvrequest(s, command, sizeof(command), resource, sizeof(resource), -1); while(1) { char name[256]; char value[256]; int rc = http_recvfield(s, name, sizeof(name), value, sizeof(value), -1); if(rc == -1 && errno == EPIPE) break; } http_sendstatus(s, 200, "OK", -1); s = http_detach(s, -1); tcp_close(s); SEE ALSO http_attach(3) http_attach_mem(3) http_detach(3) http_done(3) http_recvfield(3) http_recvstatus(3) http_sendfield(3) http_sendrequest(3) http_sendstatus(3) now(3) libdill HTTP_RECVREQUEST(3)
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | EXAMPLE | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=http_recvrequest&sektion=3&manpath=FreeBSD+Ports+15.0>
