View Issue Details

IDProjectCategoryView StatusLast Update
0004146unrealircdpublic2012-12-17 10:48
ReporterCronus Assigned Tosyzop  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionduplicate 
Product Version3.2.9 
Summary0004146: order of remote include processing not guaranteed
DescriptionMy setup: Remote include config file that has class blocks in it, the basic clients and servers block lets call that network.conf
in unrealircd.conf (locally on the server) I have a link block (or oper block doesnt matter) that uses the class blocks that are remote included in this network.conf
Note i do have the include block at the very top, it is just after my loadmodule's
I get the following complaint from unrealircd

*** Notice -- unrealircd.conf:66: illegal link::class, unknown class 'servers' using default of class 'default'
*** Notice -- unrealircd.conf:82: illegal link::class, unknown class 'servers' using default of class 'default'
*** Notice -- tmp/AE57A465.network.conf:11: illegal allow::class, unknown class 'clients' using default of class 'default'
*** Notice -- tmp/AE57A465.network.conf:18: illegal allow::class, unknown class 'clients' using default of class 'default'
Steps To ReproduceRemote include class blocks
Have link/oper blocks in local unrealircd.conf
try to rehash/start server, you will get hiccup
TagsNo tags attached.
3rd party modules

Relationships

duplicate of 0000585 resolvedsyzop [config] include files aren't directly included 

Activities

syzop

2012-11-24 14:29

administrator   ~0017239

Could it be an order issue?
And that it differs between start and rehash?
Example: when booting the ircd the include needs to be -before- the rest. And when you want to rehash it only works if it's -after- the rest.

Just a guess. I could be totally wrong ;)

syzop

2012-11-24 14:33

administrator   ~0017240

Oh, nevermind, you say it always happens. And you're on 3.2.9, I thought maybe an issue was introduced in the 3.2.10-rc1.

Then this sounds like issue 0000585 ?

Cronus

2012-11-24 20:07

reporter   ~0017241

Yes it seems like that might be the issue. I moved the blocks around and put them in this order in the remote include

class::clients
class::servers
allowblock1
allowblock2

However It still complains if i have an oper block in the main file using class::clients and if i have link blocks using class::servers

nenolod

2012-11-25 19:09

reporter   ~0017249

this is because the remote includes are processed asynchronously. so, the include data is processed later.

nenolod

2012-11-25 19:16

reporter   ~0017250

the situation is this:

- remote includes get processed after we enter the event loop (for both 3.2 and 3.4)
- order of individual remote includes is also not guaranteed as they get processed as they come in mostly

i think the solution is to do the following:

split the config parser into two levels: level 1 scans for includes, downloads remote ones and makes sure local ones are really there and then level 2 does the actual parse.

if level 1 finds remote includes, we schedule an event to come back to the config and parse it later. (or we can check to see if any other downloads are pending, then kick off the parser in url.c or whatever) this allows for the eventloop to run as needed until the config is truly built in the right order.

syzop

2012-12-15 20:29

administrator   ~0017258

The real solution would be 0000585, then all data gets processed in the way the user expects it to be.

Cronus

2012-12-15 20:36

reporter   ~0017260

I do like the idea I read in there... Read all Configs, included etc. Throw them in one config file in /tmp read it, and then go from there. As one of them stated I also have one main remote include on each server, and this remote include actually has the remote includes for the rest of the includes.

syzop

2012-12-17 10:44

administrator   ~0017272

Marking as dup of 0000585. Let's hope that one will be resolved one day ;)

Issue History

Date Modified Username Field Change
2012-11-21 08:54 Cronus New Issue
2012-11-24 14:29 syzop Note Added: 0017239
2012-11-24 14:33 syzop Note Added: 0017240
2012-11-24 14:33 syzop Priority high => normal
2012-11-24 20:07 Cronus Note Added: 0017241
2012-11-25 19:09 nenolod Note Added: 0017249
2012-11-25 19:11 nenolod Summary Remote including class blocks makes unrealircd hiccup => order of remote include processing not guaranteed
2012-11-25 19:16 nenolod Note Added: 0017250
2012-12-15 20:29 syzop Note Added: 0017258
2012-12-15 20:29 syzop Relationship added related to 0000585
2012-12-15 20:36 Cronus Note Added: 0017260
2012-12-17 10:44 syzop Note Added: 0017272
2012-12-17 10:44 syzop Relationship replaced duplicate of 0000585
2012-12-17 10:44 syzop Status new => resolved
2012-12-17 10:44 syzop Resolution open => duplicate
2012-12-17 10:44 syzop Assigned To => syzop
2012-12-17 10:47 syzop Status resolved => closed