mirror of
https://github.com/open5gs/open5gs.git
synced 2025-10-23 07:41:57 +00:00
b326b99f285c71a8249557b1bcf142c693c696e2
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.
[CORE] Fix busy loop and blocking in curl with EPOLLERR handling in Open5GS 2.7.x (#3807, #2411, #2312)
Getting Started
Please follow the documentation at open5gs.org!
Sponsors
If you find Open5GS useful for work, please consider supporting this Open Source project by Becoming a sponsor. To manage the funding transactions transparently, you can donate through OpenCollective.
Special Sponsor
Community
- Problem with Open5GS can be filed as issues in this repository.
- Other topics related to this project are happening on the discussions.
- Voice and text chat are available in Open5GS's Discord workspace. Use this link to get started.
Contributing
If you're contributing through a pull request to Open5GS project on GitHub, please read the Contributor License Agreement in advance.
License
- Open5GS Open Source files are made available under the terms of the GNU Affero General Public License (GNU AGPL v3.0).
- Commercial licenses are also available from NewPlane at sales@newplane.io.
Support
Technical support and customized services for Open5GS are provided by NewPlane at support@newplane.io.
Languages
C
97.6%
Mustache
0.9%
JavaScript
0.5%
Meson
0.5%
Python
0.3%
Other
0.2%