34 #define MHD_SOCKETS_H 1
48 #if defined(_MSC_FULL_VER) && ! defined(_SSIZE_T_DEFINED)
50 # define _SSIZE_T_DEFINED
51 typedef intptr_t ssize_t;
54 #if ! defined(MHD_POSIX_SOCKETS) && ! defined(MHD_WINSOCK_SOCKETS)
55 # if ! defined(_WIN32) || defined(__CYGWIN__)
56 # define MHD_POSIX_SOCKETS 1
58 # define MHD_WINSOCK_SOCKETS 1
69 #if defined(MHD_POSIX_SOCKETS)
70 # ifdef HAVE_SYS_TYPES_H
71 # include <sys/types.h>
73 # ifdef HAVE_SYS_TIME_H
74 # include <sys/time.h>
82 # ifdef HAVE_SYS_SOCKET_H
83 # include <sys/socket.h>
85 # if defined(__VXWORKS__) || defined(__vxworks) || defined(OS_VXWORKS)
87 # ifdef HAVE_SOCKLIB_H
90 # ifdef HAVE_INETLIB_H
94 # ifdef HAVE_NETINET_IN_H
95 # include <netinet/in.h>
97 # ifdef HAVE_ARPA_INET_H
98 # include <arpa/inet.h>
100 # ifdef HAVE_NET_IF_H
106 # ifdef HAVE_SYS_SELECT_H
107 # include <sys/select.h>
109 # ifdef EPOLL_SUPPORT
110 # include <sys/epoll.h>
112 # ifdef HAVE_NETINET_TCP_H
114 # include <netinet/tcp.h>
116 #elif defined(MHD_WINSOCK_SOCKETS)
117 # ifndef WIN32_LEAN_AND_MEAN
118 # define WIN32_LEAN_AND_MEAN 1
120 # include <winsock2.h>
121 # include <ws2tcpip.h>
124 #if defined(HAVE_POLL_H) && defined(HAVE_POLL)
129 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
130 #include <sys/param.h>
135 #ifdef _MHD_FD_SETSIZE_IS_DEFAULT
136 # define _MHD_SYS_DEFAULT_FD_SETSIZE FD_SETSIZE
138 # ifndef MHD_SYS_FD_SETSIZE_
140 # define _MHD_SYS_DEFAULT_FD_SETSIZE get_system_fdsetsize_value ()
142 # define _MHD_SYS_DEFAULT_FD_SETSIZE MHD_SYS_FD_SETSIZE_
150 # define MHD_PANIC(msg) \
151 do { fprintf (stderr, \
152 "Abnormal termination at %d line in file %s: %s\n", \
153 (int) __LINE__, __FILE__, msg); abort (); \
157 #ifndef MHD_SOCKET_DEFINED
161 # if defined(MHD_POSIX_SOCKETS)
163 # define MHD_INVALID_SOCKET (-1)
164 # elif defined(MHD_WINSOCK_SOCKETS)
166 # define MHD_INVALID_SOCKET (INVALID_SOCKET)
169 # define MHD_SOCKET_DEFINED 1
173 # define SOCK_CLOEXEC_OR_ZERO SOCK_CLOEXEC
175 # define SOCK_CLOEXEC_OR_ZERO 0
178 #ifdef HAVE_SOCK_NONBLOCK
179 # define SOCK_NONBLOCK_OR_ZERO SOCK_NONBLOCK
181 # define SOCK_NONBLOCK_OR_ZERO 0
184 #ifdef SOCK_NOSIGPIPE
185 # define SOCK_NOSIGPIPE_OR_ZERO SOCK_NOSIGPIPE
187 # define SOCK_NOSIGPIPE_OR_ZERO 0
191 # define MSG_NOSIGNAL_OR_ZERO MSG_NOSIGNAL
193 # define MSG_NOSIGNAL_OR_ZERO 0
196 #if ! defined(SHUT_WR) && defined(SD_SEND)
197 # define SHUT_WR SD_SEND
199 #if ! defined(SHUT_RD) && defined(SD_RECEIVE)
200 # define SHUT_RD SD_RECEIVE
202 #if ! defined(SHUT_RDWR) && defined(SD_BOTH)
203 # define SHUT_RDWR SD_BOTH
206 #if defined(HAVE_ACCEPT4) && (defined(HAVE_SOCK_NONBLOCK) || \
207 defined(SOCK_CLOEXEC) || defined(SOCK_NOSIGPIPE))
208 # define USE_ACCEPT4 1
211 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
212 defined(__OpenBSD__) || defined(__NetBSD__) || \
213 defined(MHD_WINSOCK_SOCKETS) || defined(__MACH__) || defined(__sun) || \
216 #define MHD_ACCEPT_INHERIT_NONBLOCK 1
219 #if defined(HAVE_EPOLL_CREATE1) && defined(EPOLL_CLOEXEC)
220 # define USE_EPOLL_CREATE1 1
227 #define MHD_TCP_FASTOPEN_QUEUE_SIZE_DEFAULT 10
231 #if defined(TCP_CORK)
235 #define MHD_TCP_CORK_NOPUSH TCP_CORK
236 #elif defined(TCP_NOPUSH)
240 #define MHD_TCP_CORK_NOPUSH TCP_NOPUSH
244 #ifdef MHD_TCP_CORK_NOPUSH
249 #define _MHD_CORK_RESET_PUSH_DATA 1
254 #define _MHD_CORK_RESET_PUSH_DATA_ALWAYS 1
256 #if (defined(__FreeBSD__) && \
257 ((__FreeBSD__ + 0) >= 5 || (__FreeBSD_version + 0) >= 450000)) || \
258 (defined(__FreeBSD_kernel_version) && \
259 (__FreeBSD_kernel_version + 0) >= 450000)
265 #define _MHD_CORK_RESET_PUSH_DATA 1
272 #define _MHD_CORK_RESET_PUSH_DATA 1
280 #define _MHD_NODELAY_SET_PUSH_DATA 1
285 #define _MHD_NODELAY_SET_PUSH_DATA_ALWAYS 1
296 #define MHD_USE_MSG_MORE 1
304 #ifdef MHD_POSIX_SOCKETS
314 #if ! defined(MHD_WINSOCK_SOCKETS)
323 #if ! defined(MHD_WINSOCK_SOCKETS)
324 # define MHD_SCKT_SEND_MAX_SIZE_ SSIZE_MAX
326 # define MHD_SCKT_SEND_MAX_SIZE_ INT_MAX
339 #if ! defined(MHD_WINSOCK_SOCKETS)
340 # define MHD_socket_close_(fd) ((0 == close ((fd))) || (EBADF != errno))
342 # define MHD_socket_close_(fd) (0 == closesocket ((fd)))
350 #define MHD_socket_close_chk_(fd) do { \
351 if (! MHD_socket_close_ (fd)) \
352 MHD_PANIC (_ ("Close socket failed.\n")); \
364 #define MHD_send4_(s,b,l,f) \
365 ((ssize_t) send ((s),(const void*) (b),(MHD_SCKT_SEND_SIZE_) (l), \
366 ((MSG_NOSIGNAL_OR_ZERO) | (f))))
376 #define MHD_send_(s,b,l) MHD_send4_((s),(b),(l), 0)
386 #define MHD_recv_(s,b,l) \
387 ((ssize_t) recv ((s),(void*) (b),(MHD_SCKT_SEND_SIZE_) (l), 0))
399 #if defined(MHD_POSIX_SOCKETS)
400 # define MHD_SCKT_FD_FITS_FDSET_SETSIZE_(fd,pset,setsize) \
401 ((fd) < ((MHD_socket) (setsize)))
402 #elif defined(MHD_WINSOCK_SOCKETS)
403 # define MHD_SCKT_FD_FITS_FDSET_SETSIZE_(fd,pset,setsize) \
404 ( ((void*) (pset)== (void*) 0) || \
405 (((fd_set*) (pset))->fd_count < ((unsigned) setsize)) || \
406 (FD_ISSET ((fd), (pset))) )
417 #define MHD_SCKT_FD_FITS_FDSET_(fd,pset) \
418 MHD_SCKT_FD_FITS_FDSET_SETSIZE_ ((fd), (pset), FD_SETSIZE)
428 #if defined(MHD_POSIX_SOCKETS)
429 # define MHD_SCKT_ADD_FD_TO_FDSET_SETSIZE_(fd,pset,setsize) \
430 FD_SET ((fd), (pset))
431 #elif defined(MHD_WINSOCK_SOCKETS)
432 # define MHD_SCKT_ADD_FD_TO_FDSET_SETSIZE_(fd,pset,setsize) \
435 fd_set*const _s_ = (fd_set*) (pset); \
436 while ((_i_ < _s_->fd_count) && ((fd) != _s_->fd_array [_i_])) {++_i_;} \
437 if ((_i_ == _s_->fd_count)) {_s_->fd_array [_s_->fd_count ++] = (fd);} \
442 #if ! defined(MHD_WINSOCK_SOCKETS)
443 # define MHD_SYS_select_(n,r,w,e,t) select ((n),(r),(w),(e),(t))
445 # define MHD_SYS_select_(n,r,w,e,t) \
446 ( ( (((void*) (r) == (void*) 0) || ((fd_set*) (r))->fd_count == 0) && \
447 (((void*) (w) == (void*) 0) || ((fd_set*) (w))->fd_count == 0) && \
448 (((void*) (e) == (void*) 0) || ((fd_set*) (e))->fd_count == 0) ) ? \
449 ( ((void*) (t) == (void*) 0) ? 0 : \
450 (Sleep ((DWORD)((struct timeval*) (t))->tv_sec * 1000 \
451 + (DWORD)((struct timeval*) (t))->tv_usec / 1000), 0) ) : \
452 (select ((int) 0,(r),(w),(e),(t))) )
455 #if defined(HAVE_POLL)
457 # if ! defined(MHD_WINSOCK_SOCKETS)
458 # define MHD_sys_poll_ poll
460 # define MHD_sys_poll_ WSAPoll
464 # define MHD_POLLPRI_OR_ZERO POLLPRI
466 # define MHD_POLLPRI_OR_ZERO 0
469 # define MHD_POLLRDBAND_OR_ZERO POLLRDBAND
471 # define MHD_POLLRDBAND_OR_ZERO 0
474 # define MHD_POLLNVAL_OR_ZERO POLLNVAL
476 # define MHD_POLLNVAL_OR_ZERO 0
481 # if defined(_WIN32) && ! defined(__CYGWIN__)
482 # define MHD_POLL_EVENTS_ERR_DISC POLLRDBAND
483 # elif defined(__linux__)
484 # define MHD_POLL_EVENTS_ERR_DISC POLLPRI
486 # define MHD_POLL_EVENTS_ERR_DISC \
487 (MHD_POLLPRI_OR_ZERO | MHD_POLLRDBAND_OR_ZERO)
491 # define MHD_POLL_REVENTS_ERR_DISC \
492 (MHD_POLLPRI_OR_ZERO | MHD_POLLRDBAND_OR_ZERO | MHD_POLLNVAL_OR_ZERO \
496 # define MHD_POLL_REVENTS_ERRROR \
497 (MHD_POLLPRI_OR_ZERO | MHD_POLLRDBAND_OR_ZERO | MHD_POLLNVAL_OR_ZERO \
501 #define MHD_SCKT_MISSING_ERR_CODE_ 31450
503 #if defined(MHD_POSIX_SOCKETS)
505 # define MHD_SCKT_EAGAIN_ EAGAIN
506 # elif defined(EWOULDBLOCK)
507 # define MHD_SCKT_EAGAIN_ EWOULDBLOCK
509 # define MHD_SCKT_EAGAIN_ MHD_SCKT_MISSING_ERR_CODE_
511 # if defined(EWOULDBLOCK)
512 # define MHD_SCKT_EWOULDBLOCK_ EWOULDBLOCK
513 # elif defined(EAGAIN)
514 # define MHD_SCKT_EWOULDBLOCK_ EAGAIN
516 # define MHD_SCKT_EWOULDBLOCK_ MHD_SCKT_MISSING_ERR_CODE_
519 # define MHD_SCKT_EINTR_ EINTR
521 # define MHD_SCKT_EINTR_ MHD_SCKT_MISSING_ERR_CODE_
524 # define MHD_SCKT_ECONNRESET_ ECONNRESET
526 # define MHD_SCKT_ECONNRESET_ MHD_SCKT_MISSING_ERR_CODE_
529 # define MHD_SCKT_ECONNABORTED_ ECONNABORTED
531 # define MHD_SCKT_ECONNABORTED_ MHD_SCKT_MISSING_ERR_CODE_
534 # define MHD_SCKT_ENOTCONN_ ENOTCONN
536 # define MHD_SCKT_ENOTCONN_ MHD_SCKT_MISSING_ERR_CODE_
539 # define MHD_SCKT_EMFILE_ EMFILE
541 # define MHD_SCKT_EMFILE_ MHD_SCKT_MISSING_ERR_CODE_
544 # define MHD_SCKT_ENFILE_ ENFILE
546 # define MHD_SCKT_ENFILE_ MHD_SCKT_MISSING_ERR_CODE_
549 # define MHD_SCKT_ENOMEM_ ENOMEM
551 # define MHD_SCKT_ENOMEM_ MHD_SCKT_MISSING_ERR_CODE_
554 # define MHD_SCKT_ENOBUFS_ ENOBUFS
556 # define MHD_SCKT_ENOBUFS_ MHD_SCKT_MISSING_ERR_CODE_
559 # define MHD_SCKT_EBADF_ EBADF
561 # define MHD_SCKT_EBADF_ MHD_SCKT_MISSING_ERR_CODE_
564 # define MHD_SCKT_ENOTSOCK_ ENOTSOCK
566 # define MHD_SCKT_ENOTSOCK_ MHD_SCKT_MISSING_ERR_CODE_
569 # define MHD_SCKT_EINVAL_ EINVAL
571 # define MHD_SCKT_EINVAL_ MHD_SCKT_MISSING_ERR_CODE_
574 # define MHD_SCKT_EPIPE_ EPIPE
576 # define MHD_SCKT_EPIPE_ MHD_SCKT_MISSING_ERR_CODE_
579 # define MHD_SCKT_EFAUL_ EFAULT
581 # define MHD_SCKT_EFAUL_ MHD_SCKT_MISSING_ERR_CODE_
584 # define MHD_SCKT_ENOSYS_ ENOSYS
586 # define MHD_SCKT_ENOSYS_ MHD_SCKT_MISSING_ERR_CODE_
589 # define MHD_SCKT_ENOPROTOOPT_ ENOPROTOOPT
591 # define MHD_SCKT_ENOPROTOOPT_ MHD_SCKT_MISSING_ERR_CODE_
594 # define MHD_SCKT_ENOTSUP_ ENOTSUP
596 # define MHD_SCKT_ENOTSUP_ MHD_SCKT_MISSING_ERR_CODE_
599 # define MHD_SCKT_EOPNOTSUPP_ EOPNOTSUPP
601 # define MHD_SCKT_EOPNOTSUPP_ MHD_SCKT_MISSING_ERR_CODE_
604 # define MHD_SCKT_EACCESS_ EACCES
606 # define MHD_SCKT_EACCESS_ MHD_SCKT_MISSING_ERR_CODE_
609 # define MHD_SCKT_ENETDOWN_ ENETDOWN
611 # define MHD_SCKT_ENETDOWN_ MHD_SCKT_MISSING_ERR_CODE_
614 # define MHD_SCKT_EALREADY_ EALREADY
616 # define MHD_SCKT_EALREADY_ MHD_SCKT_MISSING_ERR_CODE_
619 # define MHD_SCKT_EINPROGRESS_ EINPROGRESS
621 # define MHD_SCKT_EINPROGRESS_ MHD_SCKT_MISSING_ERR_CODE_
624 # define MHD_SCKT_EISCONN_ EISCONN
626 # define MHD_SCKT_EISCONN_ MHD_SCKT_MISSING_ERR_CODE_
628 #elif defined(MHD_WINSOCK_SOCKETS)
629 # define MHD_SCKT_EAGAIN_ WSAEWOULDBLOCK
630 # define MHD_SCKT_EWOULDBLOCK_ WSAEWOULDBLOCK
631 # define MHD_SCKT_EINTR_ WSAEINTR
632 # define MHD_SCKT_ECONNRESET_ WSAECONNRESET
633 # define MHD_SCKT_ECONNABORTED_ WSAECONNABORTED
634 # define MHD_SCKT_ENOTCONN_ WSAENOTCONN
635 # define MHD_SCKT_EMFILE_ WSAEMFILE
636 # define MHD_SCKT_ENFILE_ MHD_SCKT_MISSING_ERR_CODE_
637 # define MHD_SCKT_ENOMEM_ MHD_SCKT_MISSING_ERR_CODE_
638 # define MHD_SCKT_ENOBUFS_ WSAENOBUFS
639 # define MHD_SCKT_EBADF_ WSAEBADF
640 # define MHD_SCKT_ENOTSOCK_ WSAENOTSOCK
641 # define MHD_SCKT_EINVAL_ WSAEINVAL
642 # define MHD_SCKT_EPIPE_ WSAESHUTDOWN
643 # define MHD_SCKT_EFAUL_ WSAEFAULT
644 # define MHD_SCKT_ENOSYS_ MHD_SCKT_MISSING_ERR_CODE_
645 # define MHD_SCKT_ENOPROTOOPT_ WSAENOPROTOOPT
646 # define MHD_SCKT_ENOTSUP_ MHD_SCKT_MISSING_ERR_CODE_
647 # define MHD_SCKT_EOPNOTSUPP_ WSAEOPNOTSUPP
648 # define MHD_SCKT_EACCESS_ WSAEACCES
649 # define MHD_SCKT_ENETDOWN_ WSAENETDOWN
650 # define MHD_SCKT_EALREADY_ WSAEALREADY
651 # define MHD_SCKT_EINPROGRESS_ WSAEINPROGRESS
652 # define MHD_SCKT_EISCONN_ WSAEISCONN
659 #if defined(MHD_POSIX_SOCKETS)
660 # define MHD_socket_get_error_() (errno)
661 #elif defined(MHD_WINSOCK_SOCKETS)
662 # define MHD_socket_get_error_() WSAGetLastError ()
665 #ifdef MHD_WINSOCK_SOCKETS
673 const char *MHD_W32_strerror_winsock_ (
int err);
678 #if defined(MHD_POSIX_SOCKETS)
679 # define MHD_socket_strerr_(err) strerror ((err))
680 #elif defined(MHD_WINSOCK_SOCKETS)
681 # define MHD_socket_strerr_(err) MHD_W32_strerror_winsock_ ((err))
686 #define MHD_socket_last_strerr_() MHD_socket_strerr_ (MHD_socket_get_error_ ())
691 #if defined(MHD_POSIX_SOCKETS)
692 # define MHD_socket_fset_error_(err) (errno = (err))
693 #elif defined(MHD_WINSOCK_SOCKETS)
694 # define MHD_socket_fset_error_(err) (WSASetLastError ((err)))
705 #define MHD_socket_try_set_error_(err) \
706 ( (MHD_SCKT_MISSING_ERR_CODE_ != (err)) ? \
707 (MHD_socket_fset_error_ ((err)), ! 0) : 0)
714 #if defined(MHD_POSIX_SOCKETS)
716 # define MHD_socket_set_error_(err) ( (MHD_SCKT_MISSING_ERR_CODE_ == (err)) ? \
717 (errno = ENOSYS) : (errno = (err)) )
718 # elif defined(EOPNOTSUPP)
719 # define MHD_socket_set_error_(err) ( (MHD_SCKT_MISSING_ERR_CODE_ == (err)) ? \
720 (errno = EOPNOTSUPP) : (errno = \
722 # elif defined(EFAULT)
723 # define MHD_socket_set_error_(err) ( (MHD_SCKT_MISSING_ERR_CODE_ == (err)) ? \
724 (errno = EFAULT) : (errno = (err)) )
725 # elif defined(EINVAL)
726 # define MHD_socket_set_error_(err) ( (MHD_SCKT_MISSING_ERR_CODE_ == (err)) ? \
727 (errno = EINVAL) : (errno = (err)) )
730 No suitable replacement for missing socket error code is found. Edit this file and add replacement code which is defined on system.
731 # define MHD_socket_set_error_(err) (errno = (err))
733 #elif defined(MHD_WINSOCK_SOCKETS)
734 # define MHD_socket_set_error_(err) ( (MHD_SCKT_MISSING_ERR_CODE_ == (err)) ? \
735 (WSASetLastError ((WSAEOPNOTSUPP))) : \
736 (WSASetLastError ((err))) )
748 #define MHD_SCKT_ERR_IS_(err,code) \
749 ( (MHD_SCKT_MISSING_ERR_CODE_ != (code)) && ((code) == (err)) )
760 #define MHD_SCKT_LAST_ERR_IS_(code) \
761 MHD_SCKT_ERR_IS_ (MHD_socket_get_error_ (), (code))
771 #define MHD_SCKT_ERR_IS_EINTR_(err) MHD_SCKT_ERR_IS_ ((err),MHD_SCKT_EINTR_)
779 #if MHD_SCKT_EAGAIN_ == MHD_SCKT_EWOULDBLOCK_
780 # define MHD_SCKT_ERR_IS_EAGAIN_(err) MHD_SCKT_ERR_IS_ ((err),MHD_SCKT_EAGAIN_)
782 # define MHD_SCKT_ERR_IS_EAGAIN_(err) \
783 ( MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_EAGAIN_) || \
784 MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_EWOULDBLOCK_) )
792 #define MHD_SCKT_ERR_IS_LOW_RESOURCES_(err) \
793 ( MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_EMFILE_) || \
794 MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_ENFILE_) || \
795 MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_ENOMEM_) || \
796 MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_ENOBUFS_) )
804 #if defined(MHD_POSIX_SOCKETS)
805 # define MHD_SCKT_ERR_IS_DISCNN_BEFORE_ACCEPT_(err) \
806 MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_ECONNABORTED_)
807 #elif defined(MHD_WINSOCK_SOCKETS)
808 # define MHD_SCKT_ERR_IS_DISCNN_BEFORE_ACCEPT_(err) \
809 MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_ECONNRESET_)
818 #define MHD_SCKT_ERR_IS_REMOTE_DISCNN_(err) \
819 ( MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_ECONNRESET_) || \
820 MHD_SCKT_ERR_IS_ ((err), MHD_SCKT_ECONNABORTED_) )
828 #if MHD_SCKT_MISSING_ERR_CODE_ != MHD_SCKT_ENOMEM_
829 # define MHD_socket_set_error_to_ENOMEM() \
830 MHD_socket_set_error_ (MHD_SCKT_ENOMEM_)
831 #elif MHD_SCKT_MISSING_ERR_CODE_ != MHD_SCKT_ENOBUFS_
832 # define MHD_socket_set_error_to_ENOMEM() \
833 MHD_socket_set_error_ (MHD_SCKT_ENOBUFS_)
836 No suitable replacement for ENOMEM error codes is found. Edit this file and add replacement code which is defined on system.
837 # define MHD_socket_set_error_to_ENOMEM() MHD_socket_set_error_ ( \
843 #if defined(AF_LOCAL)
844 # define MHD_SCKT_LOCAL AF_LOCAL
845 #elif defined(AF_UNIX)
846 # define MHD_SCKT_LOCAL AF_UNIX
849 #if defined(MHD_POSIX_SOCKETS) && defined(MHD_SCKT_LOCAL)
850 # define MHD_socket_pair_(fdarr) \
851 (! socketpair (MHD_SCKT_LOCAL, SOCK_STREAM, 0, (fdarr)))
852 # if defined(HAVE_SOCK_NONBLOCK)
853 # define MHD_socket_pair_nblk_(fdarr) \
854 (! socketpair (MHD_SCKT_LOCAL, SOCK_STREAM | SOCK_NONBLOCK, 0, (fdarr)))
856 #elif defined(MHD_WINSOCK_SOCKETS)
864 int MHD_W32_socket_pair_ (SOCKET sockets_pair[2],
int non_blk);
866 # define MHD_socket_pair_(fdarr) MHD_W32_socket_pair_ ((fdarr), 0)
867 # define MHD_socket_pair_nblk_(fdarr) MHD_W32_socket_pair_ ((fdarr), 1)
921 #if defined(SOL_SOCKET) && defined(SO_NOSIGPIPE)
922 static const int _MHD_socket_int_one = 1;
929 #define MHD_socket_nosignal_(sock) \
930 (! setsockopt ((sock),SOL_SOCKET,SO_NOSIGPIPE,&_MHD_socket_int_one, \
931 sizeof(_MHD_socket_int_one)))
935 #if defined(MHD_socket_nosignal_) || defined(MSG_NOSIGNAL)
942 #define MHD_SEND_SPIPE_SUPPRESS_POSSIBLE 1
945 #if ! defined(MHD_WINSOCK_SOCKETS)
949 #define MHD_SEND_SPIPE_SUPPRESS_NEEDED 1
size_t MHD_SCKT_SEND_SIZE_
int MHD_add_to_fd_set_(MHD_socket fd, fd_set *set, MHD_socket *max_fd, unsigned int fd_setsize)
int MHD_socket_noninheritable_(MHD_socket sock)
int MHD_socket_nonblocking_(MHD_socket sock)
MHD_socket MHD_socket_create_listen_(int pf)
additional automatic macros for MHD_config.h
limits values definitions
int MHD_socket_set_nodelay_(MHD_socket sock, bool on)
Helper for obtaining FD_SETSIZE system default value.