50 lines
1.2 KiB
Text
50 lines
1.2 KiB
Text
/*************************************************
|
|
* Exim - an Internet mail transport agent *
|
|
*************************************************/
|
|
|
|
/* Copyright (c) Jeremy Harris 1995 - 2020 */
|
|
/* Copyright (c) The Exim Maintainers 2021 */
|
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/* See the file NOTICE for conditions of use and distribution. */
|
|
|
|
/* FreeBSD-specific code. This is concatenated onto the generic
|
|
src/os.c file. */
|
|
|
|
|
|
/*************
|
|
Sendfile shim
|
|
*************/
|
|
|
|
ssize_t
|
|
os_sendfile(int out, int in, off_t * offp, size_t cnt)
|
|
{
|
|
off_t loff = offp ? *offp : 0;
|
|
off_t written;
|
|
|
|
if (sendfile(in, out, loff, cnt, NULL, &written, 0) < 0) return (ssize_t)-1;
|
|
if (offp) *offp = loff + written;
|
|
return (ssize_t)written;
|
|
}
|
|
|
|
/*************************************************
|
|
TCP Fast Open: check that the ioctl is accepted
|
|
*************************************************/
|
|
|
|
#ifndef COMPILE_UTILITY
|
|
void
|
|
tfo_probe(void)
|
|
{
|
|
# ifdef TCP_FASTOPEN
|
|
int sock;
|
|
|
|
if ( (sock = socket(AF_INET, SOCK_STREAM, 0)) >= 0
|
|
&& setsockopt(sock, IPPROTO_TCP, TCP_FASTOPEN, &on, sizeof(on) >= 0)
|
|
)
|
|
f.tcp_fastopen_ok = TRUE;
|
|
close(sock);
|
|
# endif
|
|
}
|
|
#endif
|
|
|
|
|
|
/* End of os.c-Linux */
|