void mk_header_response_reset(struct response_headers *header) { struct mk_iov *iov; header->status = -1; header->sent = MK_FALSE; header->ranges[0] = -1; header->ranges[1] = -1; header->content_length = -1; header->connection = 0; header->transfer_encoding = -1; header->last_modified = -1; header->upgrade = -1; header->cgi = SH_NOCGI; mk_ptr_reset(&header->content_type); mk_ptr_reset(&header->content_encoding); header->location = NULL; header->_extra_rows = NULL; header->allow_methods.len = 0; /* Initialize headers IOV */ iov = &header->headers_iov; iov->io = (struct iovec *) &header->__iov_io; iov->buf_to_free = (void *) &header->__iov_buf; mk_iov_init(&header->headers_iov, MK_HEADER_IOV, 0); }
struct mk_iov *mk_iov_create(int n, int offset) { int s_all; int s_iovec; int s_free_buf; void *p; struct mk_iov *iov; s_all = sizeof(struct mk_iov); /* main mk_iov structure */ s_iovec = (n * sizeof(struct iovec)); /* iovec array size */ s_free_buf = (n * sizeof(void *)); /* free buf array */ p = mk_mem_alloc_z(s_all + s_iovec + s_free_buf); if (!p) { return NULL; } /* Set pointer address */ iov = p; iov->io = p + sizeof(struct mk_iov); iov->buf_to_free = (void *) (p + sizeof(struct mk_iov) + s_iovec); mk_iov_init(iov, n, offset); return iov; }