Skip to content

mod_http3/include/h3_os.h

Types

Name
typedef nfds_t h3_nfds_t

Functions

Name
void h3_socket_os_close(int fd)
int h3_socket_os_is_eaddrinuse(apr_status_t rv)

Defines

Name
H3_UNUSED
h3_poll
h3_getpid

Types Documentation

typedef h3_nfds_t

typedef nfds_t h3_nfds_t;

Functions Documentation

function h3_socket_os_close

void h3_socket_os_close(
    int fd
)

Parameters:

  • fd Descriptor to close; already known to be valid.

Close a socket by its OS-level descriptor.

function h3_socket_os_is_eaddrinuse

int h3_socket_os_is_eaddrinuse(
    apr_status_t rv
)

Parameters:

  • rv Status returned by apr_socket_bind.

Return: Non-zero when the port is already bound.

Whether an APR status is this platform's "address already in use".

Macros Documentation

define H3_UNUSED

#define H3_UNUSED 

Mark a parameter as deliberately unused.

define h3_poll

#define h3_poll poll

define h3_getpid

#define h3_getpid getpid

Source code

/*
 * Copyright (c) 2026 The mod_http3 Project Authors. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef H3_OS_H
#define H3_OS_H

/* Socket headers, and the names that differ across platforms. */

#if defined(_WIN32)

    #ifndef WIN32_LEAN_AND_MEAN
        #define WIN32_LEAN_AND_MEAN
    #endif
    #include <winsock2.h>

    #include <ws2tcpip.h>

    #include <process.h>

#else

    #include <netdb.h>
    #include <netinet/in.h>
    #include <poll.h>
    #include <sys/socket.h>
    #include <unistd.h>

#endif

#include <apr_errno.h>

#if defined(__GNUC__) || defined(__clang__)
    #define H3_UNUSED __attribute__((unused))
#else
    #define H3_UNUSED
#endif

/* WSAPoll matches poll() field for field here, but counts with ULONG. */
#if defined(_WIN32)
    #define h3_poll WSAPoll
    #define h3_getpid _getpid
typedef ULONG h3_nfds_t;
#else
    #define h3_poll poll
    #define h3_getpid getpid
typedef nfds_t h3_nfds_t;
#endif

void h3_socket_os_close(int fd);

int h3_socket_os_is_eaddrinuse(apr_status_t rv);

#endif /* H3_OS_H */