17#include "apr_arch_networkio.h"
22#include "apr_arch_file_io.h"
26#if defined(__FreeBSD__)
152 from->
salen =
sizeof(from->
sa);
255#if (defined(__linux__) || defined(__GNU__)) && defined(HAVE_WRITEV)
264#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILE64)
266#define sendfile sendfile64
268#elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4
295 if (
hdtr->numheaders > 0) {
318 for (
i = 0;
i <
hdtr->numheaders;
i++) {
391 if (
hdtr->numtrailers > 0) {
434 if (
hdtr->numheaders > 0) {
448 for (
i = 0;
i <
hdtr->numheaders;
i++) {
451 if (bytes_sent <
hbytes) {
509 if (
hdtr->numtrailers > 0) {
528#elif defined(__FreeBSD__) || defined(__DragonFly__)
537#if defined(__FreeBSD_version) && __FreeBSD_version < 460001
550#if defined(__FreeBSD_version) && __FreeBSD_version < 460001
551 else if (
hdtr->numheaders) {
560 for (
i = 0;
i <
hdtr->numheaders;
i++) {
652#elif defined(__hpux) || defined(__hpux__)
677#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILE64)
679#define sendfile sendfile64
682#elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4
706 switch(
hdtr->numheaders) {
716 for (
i = 0;
i <
hdtr->numheaders;
i++) {
724 for (
i = 0;
i <
hdtr->numheaders;
i++) {
726 hdtr->headers[
i].iov_len);
731 switch(
hdtr->numtrailers) {
741 for (
i = 0;
i <
hdtr->numtrailers;
i++) {
749 for (
i = 0;
i <
hdtr->numtrailers;
i++) {
751 hdtr->trailers[
i].iov_len);
804#elif defined(_AIX) || defined(__MVS__)
840 parms.header_length = 0;
842 if (
hdtr->numheaders == 1) {
843 parms.header_data =
hdtr->headers[0].iov_base;
844 parms.header_length =
hdtr->headers[0].iov_len;
847 for (
i = 0;
i <
hdtr->numheaders;
i++) {
848 parms.header_length +=
hdtr->headers[
i].iov_len;
860 for (
i = 0;
i <
hdtr->numheaders;
i++) {
862 hdtr->headers[
i].iov_len);
863 ptr +=
hdtr->headers[
i].iov_len;
869 parms.trailer_length = 0;
871 if (
hdtr->numtrailers == 1) {
872 parms.trailer_data =
hdtr->trailers[0].iov_base;
873 parms.trailer_length =
hdtr->trailers[0].iov_len;
876 for (
i = 0;
i <
hdtr->numtrailers;
i++) {
877 parms.trailer_length +=
hdtr->trailers[
i].iov_len;
886 for (
i = 0;
i <
hdtr->numtrailers;
i++) {
888 hdtr->trailers[
i].iov_len);
889 ptr +=
hdtr->trailers[
i].iov_len;
934 (*len) =
parms.bytes_sent;
954#elif defined(__osf__) && defined (__alpha)
959#elif defined(HAVE_SENDFILEV)
972#if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILEV64)
973#define sendfilevec_t sendfilevec64_t
974#define sendfilev sendfilev64
1104#error APR has detected sendfile on your system, but nobody has written a
1105#error version of it for APR yet. To get past this, either write
1106#error apr_socket_sendfile or change APR_HAS_SENDFILE in apr.h to 0.
const char apr_size_t len
const unsigned char * buf
const char apr_ssize_t int flags
apr_seek_where_t apr_off_t * offset
const char apr_file_t * file
const struct iovec apr_size_t nvec
apr_sockaddr_t * sockaddr
#define APR_INCOMPLETE_WRITE
#define APR_INCOMPLETE_READ
apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, int for_read)
void apr_sockaddr_vars_set(apr_sockaddr_t *, int, apr_port_t)
union apr_sockaddr_t::@55 sa
apr_interval_time_t timeout
apr_status_t apr_socket_sendto(apr_socket_t *sock, apr_sockaddr_t *where, apr_int32_t flags, const char *buf, apr_size_t *len)
apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock, apr_int32_t flags, char *buf, apr_size_t *len)
apr_status_t apr_socket_send(apr_socket_t *sock, const char *buf, apr_size_t *len)
apr_status_t apr_socket_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len)
apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len)
apr_status_t apr_socket_opt_set(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)