Age | Commit message (Collapse) | Author | Files | Lines |
|
(closes issue #15698)
Reported by: slavon
Patches:
20090817__issue15698.diff.txt uploaded by tilghman (license 14)
Tested by: slavon, tilghman
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@213559 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
During asterisk startup, a lock on the list of modules is obtained by the
primary thread while each module is initialized. Issue 13778 pointed out a
problem with this approach, however. Because the AMI is loaded before other
modules, it is possible for a module reload to be issued by a connected client
(via Action: Command), causing a deadlock.
The resolution for 13778 was to move initialization of the manager to happen
after the other modules had already been lodaded. While this fixed this
particular issue, it caused a problem for users (like FreePBX) who call AMI
scripts via an #exec in a configuration file (See issue 15189).
The solution I have come up with is to defer any reload requests that come in
until after the server is fully booted. When a call comes in to
ast_module_reload (from wherever) before we are fully booted, the request is
added to a queue of pending requests. Once we are done booting up, we then
execute these deferred requests in turn.
Note that I have tried to make this a bit more intelligent in that it will not
queue up more than 1 request for the same module to be reloaded, and if a
general reload request comes in ('module reload') the queue is flushed and we
only issue a single deferred reload for the entire system.
As for how this will impact existing installations - Before 13778, a reload
issued before module initialization was completed would result in a deadlock.
After 13778, you simply couldn't connect to the manager during startup (which
causes problems with #exec-that-calls-AMI configuration files). I believe this
is a good general purpose solution that won't negatively impact existing
installations.
(closes issue #15189)
(closes issue #13778)
Reported by: p_lindheimer
Patches:
06032009_15189_deferred_reloads.diff uploaded by seanbright (license 71)
Tested by: p_lindheimer, seanbright
Review: https://reviewboard.asterisk.org/r/272/
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@199022 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(Related to issue #14625)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@187300 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@144925 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
- it is no longer necessary to forcibly include asterisk/autoconfig.h; every module already includes asterisk.h as its first header (even before system headers), which serves the same purpose
- astmm.h is now included by asterisk.h when needed, instead of being forced by the Makefile; this means external modules will build properly against installed headers with MALLOC_DEBUG enabled
- simplify the usage of some of these headers in the AEL-related stuff in the utils directory
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@144924 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
These changes fix up some dubious code that I came across while auditing what
happens in the autoservice thread when there are no channels currently in
autoservice.
1) Change it so that autoservice thread doesn't keep looping around calling
ast_waitfor_n() on 0 channels twice a second. Instead, use a thread condition
so that the thread properly goes to sleep and does not wake up until a
channel is put into autoservice.
This actually fixes an interesting bug, as well. If the autoservice thread
is already running (almost always is the case), then when the thread goes
from having 0 channels to have 1 channel to autoservice, that channel would
have to wait for up to 1/2 of a second to have the first frame read from it.
2) Fix up the code in ast_waitfor_nandfds() for when it gets called with no
channels and no fds to poll() on, such as was the case with the previous code
for the autoservice thread. In this case, the code would call alloca(0), and
pass the result as the first argument to poll(). In this case, the 2nd
argument to poll() specified that there were no fds, so this invalid pointer
shouldn't actually get dereferenced, but, this code makes it explicit and
ensures the pointers are NULL unless we have valid data to put there.
(related to issue #12116)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@105563 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
dev mode is enabled, register the CLI command that can be used to run the astobj2
test and print out statistics.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@82337 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r60849 | tilghman | 2007-04-08 21:49:06 -0500 (Sun, 08 Apr 2007) | 2 lines
Don't check for error when lowering priority (according to the manpage, it should never happen anyway). It might could happen, though, if another thread messed with the priority, so safeguard against that (reported via -dev list).
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@60850 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
'threadstorage' CLI commands
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@49553 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
headers (especially system headers), the Makefile will now force it to happen (this will fix build problems with files like ast_expr2f.c, where we can't control the inclusion order in the file itself)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@48521 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@44390 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
avoid a duplicate function name (term_init())
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@44322 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
things are located
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40853 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40796 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
- restructured build tree and makefiles to eliminate recursion problems
- support for embedded modules
- support for static builds
- simpler cross-compilation support
- simpler module/loader interface (no exported symbols)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40722 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
headers already define one for us
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@33351 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
Steven <critch@basesys.com> on the -dev list.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@33152 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32971 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
install asterisk.h include the system's default include directory
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32860 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
again :-)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32846 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
autoconf and menuselect tools for Asterisk!
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@22267 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
reported by tzafrir)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@20330 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
As partly documented in loader.c and include/asterisk/module.h,
modules are now expected to return all of their methods and flags
into a structure 'mod_data', and are normally loaded with RTLD_NOW
| RTLD_LOCAL, so symbols are resolved immediately and conflicts
should be less likely. Only in a small number of cases (res_*,
typically) modules are loaded RTLD_GLOBAL, so they can export
symbols.
The core of the change is only the two files loader.c and
include/asterisk/module.h, all the rest is simply adaptation of the
existing modules to the new API, a rather mechanical (but believe
me, time and finger-consuming!) process whose detail you can figure
out by svn diff'ing any single module.
Expect some minor compilation issue after this change, please
report it on mantis http://bugs.digium.com/view.php?id=6968
so we collect all the feedback in one place.
I am just sorry that this change missed SVN version number 20000!
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@20003 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
These are momstly debugging tools for developers,
a bit documented in the header files (utils.h),
although more documentation is definitely necessary.
The performance impact is close to zero(*) so there is no
need to compile it conditionally.
(*) not completely true - thread destruction still needs
to search a list _but_ this can be easily optimized if we
end up with hundreds of active threads (in which case, though,
the problem is clearly elsewhere).
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@19544 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
ast_register_atexit()/ ast_unregister_atexit() into asterisk.h
These are general functions, not restricted to modules, so move
them in a more proper place.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@19223 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
#define DEFAULT_SAMPLE_RATE 8000
#define DEFAULT_SAMPLES_PER_MS ((DEFAULT_SAMPLE_RATE)/1000)
to the main header, and remove equivalent ones from plc.[ch]
This will simplify the cleanup of the codec/ and formats/ files.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@15969 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
which is the basis for several simplifications and fixes
to the CLI interfaces.
The core is in cli.c, some documentation on a new function
to help command completion is in cli.h, and one line of
glue code in the other two files.
Next step is to bring in the patches described in #6066 and
other simplifications.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@15817 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
convert chan->uniqueid to a stringfield from a fixed-size buffer
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@10088 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@10084 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7007 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6852 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
an AGI script (issue #4930)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6368 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6216 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
files can be read from Realtime storage
add warning for when file mapping is found but the engine is not available
add warning for trying to map 'logger.conf', since it cannot be reliably mapped
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6034 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
don't build version-string stuff for LOW_MEMORY builds
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5873 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5872 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
make doxygen expand __GNUC__ protected code blocks
make doxygen process include/asterisk.h
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5871 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5866 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
add per-file revision tags and 'show version files' CLI command
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5864 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
hardcoded paths (modules must now use run-time paths as they should) (bug #4116)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5855 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(bug #4058)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5490 f38db490-d61c-443f-a65b-d21fe96a405b
|