View Issue Details

IDProjectCategoryView StatusLast Update
0006569unrealircdpublic2025-08-25 15:54
ReporterBun-Bun Assigned Tosyzop  
PrioritylowSeveritymajorReproducibilityalways
Status closedResolutionno change required 
PlatformLinuxOSCentosOS Version7
Product Version6.1.10 
Summary0006569: FTP Remote Includes timesout
DescriptionFTP 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 ReproduceRehash server while utilizing remote includes over FTP.
Additional Informationunrealircd.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

Activities

syzop

2025-08-25 15:54

administrator   ~0023480

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)!

Issue History

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