FreeBSD Manual Pages
HTTP_ATTACH_MEM(3) libdill Library Functions HTTP_ATTACH_MEM(3) NAME http_attach_mem - creates HTTP protocol on top of underlying socket SYNOPSIS #include <libdill.h> int http_attach_mem( int s, struct http_storage* mem); 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 instantiates HTTP protocol on top of the underlying pro- tocol. This function allows to avoid one dynamic memory allocation by storing the object in user-supplied memory. Unless you are hyper-optimizing use http_attach instead. s: Handle of the underlying socket. It must be a bytestream protocol. mem: The structure to store the newly created object in. It must not be deallocated before the object is closed. The socket can be cleanly shut down using http_detach function. This function is not available if libdill is compiled with --dis- able-sockets option. RETURN VALUE In case of success the function returns newly created socket handle. In case of error it returns -1 and sets errno to one of the values be- low. ERRORS • EBADF: Invalid handle. • EMFILE: The maximum number of file descriptors in the process are al- ready open. • ENFILE: The maximum number of file descriptors in the system are al- ready open. • ENOMEM: Not enough memory. • ENOTSUP: The handle does not support this operation. • EPROTO: Underlying socket is not a bytestream socket. EXAMPLE int s = tcp_connect(&addr, -1); s = http_attach(s); http_sendrequest(s, "GET", "/", -1); http_sendfield(s, "Host", "www.example.org", -1); http_done(s, -1); char reason[256]; http_recvstatus(s, reason, sizeof(reason), -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; } s = http_detach(s, -1); tcp_close(s); SEE ALSO hclose(3) http_attach(3) http_detach(3) http_done(3) http_recvfield(3) http_recvrequest(3) http_recvstatus(3) http_sendfield(3) http_sendrequest(3) http_sendstatus(3) libdill HTTP_ATTACH_MEM(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_attach_mem&sektion=3&manpath=FreeBSD+Ports+15.0>
