open5gs/lib/core
Sukchan Lee b326b99f28 [CORE] Fix busy loop and blocking in curl with EPOLLERR handling in Open5GS 2.7.x (#3807, #2411, #2312)
In Open5GS 2.7.x, when using curl 8.x with external epoll, an issue occurred
where the peer connection was closed, triggering EPOLLERR. At this point,
POLL_OUT should have been set to trigger the write event handler, invoking
`event_cb()` and calling `curl_multi_socket_action`. This would allow
`curl_multi_info_read` to execute without blocking.

However, when `event_cb()` wasn't invoked, `curl_multi_socket_action` was
not called, causing `curl_multi_info_read` to block. This resulted in a busy
loop in epoll, continuously checking for the closed peer connection.

This issue specifically affects Open5GS 2.7.x with curl 8.x, and is observed
on Ubuntu versions starting from **noble** and later. It does not occur on
Ubuntu Jammy.

The solution involves globally ignoring SIGPIPE and fixing the epoll logic
to ensure POLL_OUT is triggered when EPOLLERR occurs, allowing `curl_multi_socket_action`
to be invoked and `curl_multi_info_read` to run non-blocking. This resolves
the busy loop and connection issues caused by peer disconnects when using
curl 8.x and external epoll.

This fix improves the stability and performance of Open5GS when used with
curl 8.x and Ubuntu versions **noble** and above.
2025-03-30 21:46:31 +09:00
..
abts.c [tests] Upgrade tests for multiple NFs 2024-09-03 22:09:56 +09:00
abts.h Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
arc4random.c Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
meson.build Introduced Subscription identifier de-concealing 2022-12-24 20:22:45 +09:00
ogs-abort.c Add exception handling for #568 2020-09-18 19:39:02 -04:00
ogs-abort.h Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-compat.h test: Porting FreeBSD 2021-02-08 14:25:40 -05:00
ogs-conv.c [DBI] Improve YAML policy config by adding SUPI range filtering 2025-02-05 21:56:15 +09:00
ogs-conv.h [DBI] Improve YAML policy config by adding SUPI range filtering 2025-02-05 21:56:15 +09:00
ogs-core.c [PFCP/GTP] SEID/TEID Randomness (#1303) 2023-04-16 12:30:36 +09:00
ogs-core.h Introduced Subscription identifier de-concealing 2022-12-24 20:22:45 +09:00
ogs-env.c Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-env.h Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-epoll.c [CORE] Fix busy loop and blocking in curl with EPOLLERR handling in Open5GS 2.7.x (#3807, #2411, #2312) 2025-03-30 21:46:31 +09:00
ogs-errno.c [ALL] Removing trailing whitespace and tab 2022-09-02 23:38:39 +09:00
ogs-errno.h [AMF/MME] Fixed crash when no NG/S1 context(#2012) 2023-01-23 10:37:22 +09:00
ogs-file.c Introduced Subscription identifier de-concealing 2022-12-24 20:22:45 +09:00
ogs-file.h Introduced Subscription identifier de-concealing 2022-12-24 20:22:45 +09:00
ogs-fsm.c Move src/../nf-sm.[ch] to lib/sbi/nf-sm.[ch] 2022-08-12 14:03:53 +09:00
ogs-fsm.h Move src/../nf-sm.[ch] to lib/sbi/nf-sm.[ch] 2022-08-12 14:03:53 +09:00
ogs-getopt.c License update 2020-11-12 20:58:08 -05:00
ogs-getopt.h License update 2020-11-12 20:58:08 -05:00
ogs-hash.c Fixed MacOSX compile error 2023-04-04 21:53:39 +09:00
ogs-hash.h [5GC/EPC] tested with concurrent 500 UEs (#949) 2021-04-29 22:01:34 +09:00
ogs-kqueue.c [ALL] Removing trailing whitespace and tab 2022-09-02 23:38:39 +09:00
ogs-list.h [MME] Hangs on an invalid S1AP message 2024-01-17 20:17:55 +09:00
ogs-log.c [CORE] logger: add option to disable timestamps 2024-04-18 21:08:35 +09:00
ogs-log.h [CORE] logger: add option to disable timestamps 2024-04-18 21:08:35 +09:00
ogs-macros.h [POOL] change cycle to hash id in xact (#3196) 2024-06-30 22:03:13 +09:00
ogs-memory.c [LOG] remove ogs_expect_or_return()/return_val() 2023-01-24 00:01:36 +09:00
ogs-memory.h [PFCP/GTP] SEID/TEID Randomness (#1303) 2023-04-16 12:30:36 +09:00
ogs-misc.c License update 2020-11-12 20:58:08 -05:00
ogs-misc.h License update 2020-11-12 20:58:08 -05:00
ogs-notify.c Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-notify.h Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-pkbuf.c [PFCP/GTP] SEID/TEID Randomness (#1303) 2023-04-16 12:30:36 +09:00
ogs-pkbuf.h [core] Fix a couple of warnings when using C++ compiler or more strict settings 2024-01-09 17:50:22 +09:00
ogs-poll-private.h Change Number of UEs usage [#533] 2020-08-25 23:05:01 -04:00
ogs-poll.c [LOG] remove ogs_expect_or_return()/return_val() 2023-01-24 00:01:36 +09:00
ogs-poll.h [5GC/EPC] tested with concurrent 500 UEs (#949) 2021-04-29 22:01:34 +09:00
ogs-pool.h [POOL] REMOVE ogs_pool_cycle() (#3196) 2024-06-30 22:03:13 +09:00
ogs-process.c License update 2020-11-12 20:58:08 -05:00
ogs-process.h [ALL] Fix differences in function parameter names between definition and declaration 2022-07-01 21:38:47 +09:00
ogs-queue.c [LOG] remove ogs_expect_or_return()/return_val() 2023-01-24 00:01:36 +09:00
ogs-queue.h License update 2020-11-12 20:58:08 -05:00
ogs-rand.c [ALL] Removing trailing whitespace and tab 2022-09-02 23:38:39 +09:00
ogs-rand.h Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-rbtree.c Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-rbtree.h [core] Fix a couple of warnings when using C++ compiler or more strict settings 2024-01-09 17:50:22 +09:00
ogs-select.c Update ogs_pollset library 2020-11-09 22:57:14 -05:00
ogs-signal.c [CORE] Fix busy loop and blocking in curl with EPOLLERR handling in Open5GS 2.7.x (#3807, #2411, #2312) 2025-03-30 21:46:31 +09:00
ogs-signal.h License update 2020-11-12 20:58:08 -05:00
ogs-sockaddr.c [PFCP] Reduce DNS spam for FQDN nodes (#3431) (#3664) 2025-01-18 12:15:00 +09:00
ogs-sockaddr.h [PFCP] Reduce DNS spam for FQDN nodes (#3431) (#3664) 2025-01-18 12:15:00 +09:00
ogs-socket.c [LOG] remove ogs_expect_or_return()/return_val() 2023-01-24 00:01:36 +09:00
ogs-socket.h Improve the socket option configuration (#1404) 2022-03-15 22:03:50 +09:00
ogs-socknode.c [LOG] remove ogs_expect_or_return()/return_val() 2023-01-24 00:01:36 +09:00
ogs-socknode.h Improve the socket option configuration (#1404) 2022-03-15 22:03:50 +09:00
ogs-sockopt.c Change EPERM to OGS_EPERM (#1436,#1404) 2022-03-16 20:32:19 +09:00
ogs-sockopt.h Move src/../nf-sm.[ch] to lib/sbi/nf-sm.[ch] 2022-08-12 14:03:53 +09:00
ogs-sockpair.c Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-sockpair.h Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-strings.c [LOG] remove ogs_expect_or_return()/return_val() 2023-01-24 00:01:36 +09:00
ogs-strings.h [PFCP/GTP] SEID/TEID Randomness (#1303) 2023-04-16 12:30:36 +09:00
ogs-tcp.c Improve the socket option configuration (#1404) 2022-03-15 22:03:50 +09:00
ogs-tcp.h Improve the socket option configuration (#1404) 2022-03-15 22:03:50 +09:00
ogs-thread.c [LOG] remove ogs_expect_or_return()/return_val() 2023-01-24 00:01:36 +09:00
ogs-thread.h Rename Project to Open5GS 2019-10-27 17:41:14 +09:00
ogs-time.c Follow-up on #1770 2022-09-25 16:42:46 +09:00
ogs-time.h [NRF] Fix the subscription valdityTime (#3360 #3361 #3363 #3364) 2024-08-04 13:32:53 +09:00
ogs-timer.c [POOL] refactor memory in GTP/PFCP xact (#3196) 2024-06-30 22:03:13 +09:00
ogs-timer.h [AMF/MME] Remove code that doesn't work (#2013) 2023-07-23 14:54:06 +09:00
ogs-tlv-msg.c [GTP] gtp_message_fuzz: Abrt in ogs_abort 2023-08-24 22:19:42 +09:00
ogs-tlv-msg.h Changes MAX TLV MORE to 16 2022-06-29 14:35:01 +09:00
ogs-tlv.c A minor typo fix (#2707) 2023-10-28 22:11:58 +09:00
ogs-tlv.h Introduce Gn interface (GTPv1C) Support to PGW (#1351) 2022-02-18 22:23:45 +09:00
ogs-udp.c Improve the socket option configuration (#1404) 2022-03-15 22:03:50 +09:00
ogs-udp.h Improve the socket option configuration (#1404) 2022-03-15 22:03:50 +09:00
ogs-uuid.c Follow-up on #1770 2022-09-25 16:42:46 +09:00
ogs-uuid.h License update 2020-11-12 20:58:08 -05:00