View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0006569 | unreal | ircd | public | 2025-08-11 03:17 | 2025-08-25 15:54 |
| Reporter | Bun-Bun | Assigned To | syzop | ||
| Priority | low | Severity | major | Reproducibility | always |
| Status | closed | Resolution | no change required | ||
| Platform | Linux | OS | Centos | OS Version | 7 |
| Product Version | 6.1.10 | ||||
| Summary | 0006569: FTP Remote Includes timesout | ||||
| Description | FTP Remote includes times out even though all data is transferred. This causes fallback to cached copy meaning remote conf changes are not synced during rehash. | ||||
| Steps To Reproduce | Rehash server while utilizing remote includes over FTP. | ||||
| Additional Information | unrealircd.conf [ircadmin@hugo unrealircd]$ cat conf/unrealircd.conf include "ftp://***:***@remoteconfig.***.ca/ircd-remote.u6.conf"; include "ftp://***:***@remoteconfig.***.ca/hugo.***.ca.u6.conf"; console output [info] Loading IRCd configuration.. [error] [io] fd_refresh(): epoll_ctl returned error for fd 6 (CURL transfer): File exists (hangs here awhile) [error] /home/ircadmin/unrealircd/conf/unrealircd.conf:1: Failed to download 'ftp://***:***@remoteconfig.***.ca/ircd-remote.u6.conf': Operation timed out after 45000 milliseconds with 7190 out of 7190 bytes received [error] Using a cached copy instead. [error] /home/ircadmin/unrealircd/conf/modules.default.conf:307: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIPv6.dat': Unknown cipher in list: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 [error] Using a cached copy instead. [error] /home/ircadmin/unrealircd/conf/modules.default.conf:308: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIPASNum.dat': Unknown cipher in list: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 [error] Using a cached copy instead. [error] /home/ircadmin/unrealircd/conf/modules.default.conf:309: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIPASNumv6.dat': Unknown cipher in list: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 [error] Using a cached copy instead. [error] /home/ircadmin/unrealircd/conf/modules.default.conf:306: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIP.dat': Unknown cipher in list: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 [error] Using a cached copy instead. [info] Testing IRCd configuration.. [info] Configuration loaded [info] Configuration test passed OK [ircadmin@hugo unrealircd]$ changing from FTP to http doesn't exhibit the same behavior. unrealircd.conf [ircadmin@hugo unrealircd]$ cat conf/unrealircd.conf include "http://nyy.ca/ircd-remote.u6.conf"; include "http://nyy.ca/hugo.nyy.ca.u6.conf"; console output [ircadmin@hugo unrealircd]$ ./unrealircd configtest [info] Loading IRCd configuration.. [error] /home/ircadmin/unrealircd/conf/modules.default.conf:309: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIPASNumv6.dat': Unknown cipher in list: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 [error] Using a cached copy instead. [error] /home/ircadmin/unrealircd/conf/modules.default.conf:307: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIPv6.dat': Unknown cipher in list: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 [error] Using a cached copy instead. [error] /home/ircadmin/unrealircd/conf/modules.default.conf:308: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIPASNum.dat': Unknown cipher in list: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 [error] Using a cached copy instead. [error] /home/ircadmin/unrealircd/conf/modules.default.conf:306: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIP.dat': Unknown cipher in list: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 [error] Using a cached copy instead. [info] Testing IRCd configuration.. [info] Configuration loaded [info] Configuration test passed OK [ircadmin@hugo unrealircd]$ Recompiling unrealircd using systemwide curl did not fix the issue. Curl has no issues downloading any of the above files over FTP or http or https at console. However, if I renamed the config file on the ftp target and updated the local config to point to that would work on the first sync. After that it would repeat the error suggesting a cache issue. Upgrading from Centos 7 to Alma Linux 8 and then recompiling unrealircd ultimately fixes all the issues, the ftp remote include as well as the https geoip downloads. After a ton of testing and going back and forth, my best guess is the remote include loop for ftp targets falls back to cache more easily (maybe from the geoip download errors?) than when using http. Since this is a unsupported OS and likely an issue stemming from out of date libraries, I am not sure it is worth investigating. But I do have a copy of the VM prior to upgrading to Alma 8 if additional info or testing is needed. | ||||
| Tags | /rehash, configcheck, ircd | ||||
| 3rd party modules | |||||
|
|
Hey Bun-Bun, Thanks again for reporting the bug. The fact that the "curl" command worked fine and the "curl" library is not entirely odd, from a technical perspective. It sounds like the bug was related to how file descriptors are handled and possibly what I/O engine (calls) are used, so.. don't let that part confuse you too much (though i totally understand :D). Great that - after presumably hours - you were able to fix it. It very much sounds like a curl (library) bug, which is indeed then fixed in a later curl version. Sadly, sometimes newer curl versions introduce new bugs, so it could still happen again in the future, especially for lesser used protocols, but hey.. that's life ;D I agree, let's close this. No action is needed anymore on our end (nor yours)! |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-08-11 03:17 | Bun-Bun | New Issue | |
| 2025-08-11 03:17 | Bun-Bun | Tag Attached: /rehash | |
| 2025-08-11 03:17 | Bun-Bun | Tag Attached: configcheck | |
| 2025-08-11 03:17 | Bun-Bun | Tag Attached: ircd | |
| 2025-08-25 15:54 | syzop | Assigned To | => syzop |
| 2025-08-25 15:54 | syzop | Status | new => closed |
| 2025-08-25 15:54 | syzop | Resolution | open => no change required |
| 2025-08-25 15:54 | syzop | Note Added: 0023480 |