Summary: | ASTERISK-09176: AEL doesn't load default context at first time | ||
Reporter: | Pierre CHRETIEN (pierrec) | Labels: | |
Date Opened: | 2007-04-03 16:59:38 | Date Closed: | 2007-06-21 18:04:42 |
Priority: | Minor | Regression? | No |
Status: | Closed/Complete | Components: | PBX/pbx_ael |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ( 0) extensions.ael | |
Description: | I am using the following context definition in extensions.conf : [default] include => parkedcalls include => internal; include => predialed_outgoing; include => outgoing; include => incoming; If I try to switch the whole extention config to AEL, with the following syntax (where contexts are defined in AEL) : context default { includes { parkedcalls; internal; predialed_outgoing; outgoing; incoming; } } AEL does not load the default context the first time the AEL compiler is executed. If Asterisk is started from scratch, or after a "reload" instruction, the extensions defined in default context are not reachable, and I receive the following message : [Apr 3 23:37:22] NOTICE[2845]: chan_iax2.c:7171 socket_process: Rejected connect attempt from 192.168.1.20, request '610@default' does not exist These extensions become reachable after an AEL reload instruction. This is a problem in case of a cold start of the machine after a power failure, because the Asterisk would not be operational before a manual invervention. This problem can be solved by keeping the default context definition in the extensions.conf file, and the rest of the extension confi in the AEL file. | ||
Comments: | By: Chad Wallace (cmdrwalrus) 2007-04-05 13:57:46 I am experiencing a similar problem, with asterisk 1.4.2 on Debian/amd64, and I suspect it is the same issue. I have a context "internal" that includes "default". After "module reload", the extensions from "default" are not available to "internal"--Asterisk returns 404 when you try to dial them from a phone in "internal". Other extensions in the "internal" context are available, but not the ones that are included from "default". If I do "ael reload" after "module reload", those extensions work just fine. Now, on a hunch, I just renamed the "default" context to "hooligan" (and changed "internal" to include "hooligan"), and now all the extensions work like a charm, regardless of whether I do "module reload" or "ael reload". So, it is caused by the context being named "default". Are we not supposed to define a "default" context? Is it a reserved word, or something like that? Oh, one thing to note... I also have a voicemail context called "default". I'll attach a simplified extensions.ael that causes this problem. After "module reload" extensions 203 and 451, etc. don't work, but 853 does. After "ael reload" they all work. By: Chad Wallace (cmdrwalrus) 2007-04-05 14:05:16 I just noticed the output of "module reload". It looks like pbx_config.so is being loaded just after pbx_ael.so, and it is redefining the "default" context, even though the word "default" doesn't appear in extensions.conf at all. After moving the "load=pbx_ael.so" line in modules.conf below "load=pbx_config.so", everything works as it should. So, I guess the only problem here is that pbx_config.so defines a "default" context even if there isn't one in extensions.conf. By: Pierre CHRETIEN (pierrec) 2007-04-05 16:37:06 You're probably right cmdwalrus : if I take the default context off the extensions.conf, and reload modules, then the "dialplan show" command has the following output : [ Context 'default' created by 'pbx_config' ] followed by all the AEL context declarations, including this one : [ Context 'default' created by 'pbx_ael' ] Include => 'parkedcalls' [pbx_ael] Include => 'internal' [pbx_ael] Include => 'predialed_outgoing' [pbx_ael] Include => 'outgoing' [pbx_ael] Include => 'incoming' [pbx_ael] which is not taken into consideration. After AEL reload, the dialplan show is modified and shows : [ Context 'default' created by 'pbx_ael' ] Include => 'parkedcalls' [pbx_ael] Include => 'internal' [pbx_ael] Include => 'predialed_outgoing' [pbx_ael] Include => 'outgoing' [pbx_ael] Include => 'incoming' [pbx_ael] [ Context 'default' created by 'pbx_config' ] and there, the default context created in AEL in interpreted. So the problem could be solved : - either by removing the default context creation in the pbx_config, when default is not a context of extensions.conf - or by documenting the point and recommending a default context to be created inside extentions.conf, which could include ael_default in extensions.ael if prefered. By: Joshua C. Colp (jcolp) 2007-06-21 16:45:49 This has to do with duplicate contexts being created which is being addressed in another bug. Since you've located a workaround though I'm closing this one out. By: Steve Murphy (murf) 2007-06-21 18:04:42 I'll try to document that using default as a context name is a bad idea in AEL in the docs... Or, if I get lotsa complaints, I'll not allow 'default' as a context name.... Which would be a better/easier solution than trying to mod the load order...? |