1*78e936b2SEnji Cooper /* 2*78e936b2SEnji Cooper * Copyright 2026 The OpenSSL Project Authors. All Rights Reserved. 3*78e936b2SEnji Cooper * 4*78e936b2SEnji Cooper * Licensed under the Apache License 2.0 (the "License"). You may not use 5*78e936b2SEnji Cooper * this file except in compliance with the License. You can obtain a copy 6*78e936b2SEnji Cooper * in the file LICENSE in the source distribution or at 7*78e936b2SEnji Cooper * https://www.openssl.org/source/license.html 8*78e936b2SEnji Cooper */ 9*78e936b2SEnji Cooper 10*78e936b2SEnji Cooper #include "../ssl/rio/poll_builder.h" 11*78e936b2SEnji Cooper #include "testutil.h" 12*78e936b2SEnji Cooper test_duplicate_fd(void)13*78e936b2SEnji Cooperstatic int test_duplicate_fd(void) 14*78e936b2SEnji Cooper { 15*78e936b2SEnji Cooper #if RIO_POLL_METHOD == RIO_POLL_METHOD_POLL 16*78e936b2SEnji Cooper RIO_POLL_BUILDER rpb; 17*78e936b2SEnji Cooper struct pollfd *pfds; 18*78e936b2SEnji Cooper int ret = 0; 19*78e936b2SEnji Cooper 20*78e936b2SEnji Cooper if (!TEST_true(ossl_rio_poll_builder_init(&rpb))) 21*78e936b2SEnji Cooper return 0; 22*78e936b2SEnji Cooper 23*78e936b2SEnji Cooper if (!TEST_true(ossl_rio_poll_builder_add_fd(&rpb, 0, 1, 0)) 24*78e936b2SEnji Cooper || !TEST_true(ossl_rio_poll_builder_add_fd(&rpb, 0, 0, 1))) 25*78e936b2SEnji Cooper goto out; 26*78e936b2SEnji Cooper 27*78e936b2SEnji Cooper pfds = rpb.pfd_heap != NULL ? rpb.pfd_heap : rpb.pfds; 28*78e936b2SEnji Cooper if (!TEST_size_t_eq(rpb.pfd_num, 1) 29*78e936b2SEnji Cooper || !TEST_int_eq(pfds[0].events, POLLIN | POLLOUT)) 30*78e936b2SEnji Cooper goto out; 31*78e936b2SEnji Cooper 32*78e936b2SEnji Cooper ret = 1; 33*78e936b2SEnji Cooper out: 34*78e936b2SEnji Cooper ossl_rio_poll_builder_cleanup(&rpb); 35*78e936b2SEnji Cooper return ret; 36*78e936b2SEnji Cooper #else 37*78e936b2SEnji Cooper return TEST_skip("poll() backend is not in use"); 38*78e936b2SEnji Cooper #endif 39*78e936b2SEnji Cooper } 40*78e936b2SEnji Cooper setup_tests(void)41*78e936b2SEnji Cooperint setup_tests(void) 42*78e936b2SEnji Cooper { 43*78e936b2SEnji Cooper ADD_TEST(test_duplicate_fd); 44*78e936b2SEnji Cooper return 1; 45*78e936b2SEnji Cooper } 46