mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 08:13:22 +00:00
Compare commits
12 Commits
1.2.9.1
...
1.2.2-nets
Author | SHA1 | Date | |
---|---|---|---|
|
f7d5acbeea | ||
|
914ac7c596 | ||
|
c6b845fe98 | ||
|
7c29d1c571 | ||
|
1cc6f6d3bb | ||
|
ca0a371996 | ||
|
b0fd9f9b74 | ||
|
396f6561a4 | ||
|
f16619507a | ||
|
69ac155838 | ||
|
a6bae85952 | ||
|
494b9c486e |
1
.lastclean
Normal file
1
.lastclean
Normal file
@@ -0,0 +1 @@
|
||||
8
|
2
CREDITS
2
CREDITS
@@ -85,7 +85,7 @@ Leif Madsen, Jared Smith and Jim van Meggelen - the Asterisk book
|
||||
available under a Creative Commons License at http://www.asteriskdocs.org
|
||||
|
||||
=== HOLD MUSIC ===
|
||||
Music provided by www.freeplaymusic.com
|
||||
Music provided by www.opsound.org
|
||||
|
||||
=== OTHER SOURCE CODE IN ASTERISK ===
|
||||
|
||||
|
705
ChangeLog
705
ChangeLog
@@ -1,3 +1,708 @@
|
||||
2006-01-18 Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* Asterisk 1.2.2-netsec Released with Ranch Networks network security
|
||||
device support
|
||||
|
||||
2006-01-18 00:47 +0000 [r8162] Matt O'Gorman <mogorman@digium.com>
|
||||
|
||||
* loader.c: Changed order of autoload so that pbx_ comes before
|
||||
channels, and in doing so cause bug 6002 to not be an issue
|
||||
|
||||
2006-01-17 20:10 +0000 [r8140] Matt O'Gorman <mogorman@digium.com>
|
||||
|
||||
* apps/app_festival.c: Stop any generators running on a channel
|
||||
when festival is called as described in 5996
|
||||
|
||||
2006-01-17 18:29 +0000 [r8134] Matt Frederickson <creslin@digium.com>
|
||||
|
||||
* res/res_features.c: Backport of fix for #6094
|
||||
|
||||
2006-01-17 16:55 +0000 [r8124] Matt O'Gorman <mogorman@digium.com>
|
||||
|
||||
* logger.c: Fixed code ordering of logger_init and queue_log_init
|
||||
bug 6263
|
||||
|
||||
2006-01-17 13:11 +0000 [r8122] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* asterisk.c: update CLI copyright notice
|
||||
|
||||
2006-01-16 23:51 +0000 [r8112] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* asterisk.c: do rlimit check _after_ reading config file, in case
|
||||
'dumpcore' is specified there
|
||||
|
||||
2006-01-14 19:06 +0000 [r8074] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* funcs/func_strings.c: Bug 6238 - Fix segfault when delimiter not
|
||||
specified
|
||||
|
||||
2006-01-13 06:07 +0000 [r8047] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_agent.c: fix spelling errors (issue #6227)
|
||||
|
||||
2006-01-12 06:14 +0000 [r7999] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_voicemail.c, configs/voicemail.conf.sample: Bug 6211 -
|
||||
Add option deletevoicemail as equivalent to option delete for
|
||||
Realtime
|
||||
|
||||
2006-01-11 19:08 +0000 [r7986] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_agent.c: move variable to correct scope (issue
|
||||
#6197)
|
||||
|
||||
2006-01-11 07:18 +0000 [r7976] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_voicemail.c: fix temp greetings with ODBC storage (issue
|
||||
#6078)
|
||||
|
||||
2006-01-11 05:46 +0000 [r7972] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_sip.c: fix mem leak on module unload (issue #6190)
|
||||
|
||||
2006-01-11 05:26 +0000 [r7970] Russell Bryant <russell@digium.com>
|
||||
|
||||
* app.c: don't override an error condition that occurred when
|
||||
acting on the primary channel when stopping the autoservice on
|
||||
the peer channel. (from issue #6087)
|
||||
|
||||
2006-01-11 04:53 +0000 [r7965] Russell Bryant <russell@digium.com>
|
||||
|
||||
* translate.c: lock list of translators *before* recalculating the
|
||||
translation matrix
|
||||
|
||||
2006-01-11 04:38 +0000 [r7963] Matt O'Gorman <mogorman@digium.com>
|
||||
|
||||
* channel.c: Minor typo refrenced in 6191
|
||||
|
||||
2006-01-11 04:19 +0000 [r7960] Russell Bryant <russell@digium.com>
|
||||
|
||||
* pbx.c: fix locking error - lock instead of unlock
|
||||
|
||||
2006-01-11 03:12 +0000 [r7957] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_dial.c: fix a little typo
|
||||
|
||||
2006-01-11 01:30 +0000 [r7955] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_voicemail.c: Bug 6192 - behave correctly when mailbox is
|
||||
specified as argument
|
||||
|
||||
2006-01-10 08:48 +0000 [r7939] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* doc/README.cdr: - Adding reference to README.tds - Reformatting
|
||||
table
|
||||
|
||||
2006-01-09 22:48 +0000 [r7917] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_iax2.c: re-initialize _all_ sequence numbers when
|
||||
transfer completes
|
||||
|
||||
2006-01-09 22:07 +0000 [r7915] Russell Bryant <russell@digium.com>
|
||||
|
||||
* file.c: add missing unlock (issue #6112)
|
||||
|
||||
2006-01-09 20:08 +0000 [r7908] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* pbx/pbx_spool.c: Bug 6157 - Memory leak
|
||||
|
||||
2006-01-09 18:37 +0000 [r7904] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* doc/README.variables: Update variable documentation to match the
|
||||
code
|
||||
|
||||
2006-01-09 18:11 +0000 [r7898-7900] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* asterisk.c: commit user/group-related changes from trunk
|
||||
|
||||
* db.c: backport fix from revision 7856 of trunk
|
||||
|
||||
* apps/app_voicemail.c: fix breakage introduced in revision 7871
|
||||
|
||||
2006-01-09 05:11 +0000 [r7871] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_voicemail.c: fix seg fault when using greek syntax in
|
||||
VoicemMailMain (issue #6142)
|
||||
|
||||
2006-01-09 04:52 +0000 [r7870] Russell Bryant <russell@digium.com>
|
||||
|
||||
* manager.c: backport fix for unnecessary unlock (issue #6171)
|
||||
|
||||
2006-01-07 07:27 +0000 [r7848] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* pbx/pbx_spool.c: Bug 6156 - catch all threading errors, not just
|
||||
simple failure
|
||||
|
||||
2006-01-06 00:34 +0000 [r7831] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* pbx/pbx_config.c: Dumb error messages - "Context 'context'
|
||||
already included in 'in' context"
|
||||
|
||||
2006-01-06 00:21 +0000 [r7829] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_agent.c: update agent persistence when an agent
|
||||
gets logged off by autologoff
|
||||
|
||||
2006-01-05 23:53 +0000 [r7827] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* include/asterisk/strings.h: Bug 6076 - Fix documentation of
|
||||
ast_trim_blank return value
|
||||
|
||||
2006-01-05 23:49 +0000 [r7825] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channel.c: eliminate rounding errors that caused call time limits
|
||||
to be inaccurate (issue #5913) round 'time left' reported during
|
||||
call limit warnings up to sound more accurate
|
||||
|
||||
2006-01-05 23:07 +0000 [r7823] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* res/res_features.c: Bug 6081 - fix for memory leak, formatting
|
||||
fixes
|
||||
|
||||
2006-01-05 20:52 +0000 [r7819] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* formats/format_pcm.c, formats/format_pcm_alaw.c: ensure that
|
||||
variable is initialized
|
||||
|
||||
2006-01-05 09:13 +0000 [r7812] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* res/res_features.c: Fix copyright of changed file
|
||||
|
||||
2006-01-05 00:58 +0000 [r7809] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_agent.c: send device state updates for auto-logoff
|
||||
of agents as well
|
||||
|
||||
2006-01-05 00:18 +0000 [r7807] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* formats/format_pcm.c, formats/format_pcm_alaw.c: doh... fseek()
|
||||
has no useful return value
|
||||
|
||||
2006-01-04 23:51 +0000 [r7805] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* formats/format_pcm.c, formats/format_pcm_alaw.c: use proper
|
||||
fwrite() parameters and return value
|
||||
|
||||
2006-01-04 23:45 +0000 [r7803] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* formats/format_pcm.c, formats/format_pcm_alaw.c: return properly
|
||||
after extending file
|
||||
|
||||
2006-01-04 23:27 +0000 [r7800] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* formats/format_pcm.c, formats/format_pcm_alaw.c: ensure that
|
||||
ulaw/alaw sound files are filled with silence when extended (not
|
||||
zeroes)
|
||||
|
||||
2006-01-04 23:02 +0000 [r7799] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channel.c: make monitoring more tolerant of peers that deliver
|
||||
frames in bursts
|
||||
|
||||
2006-01-04 21:46 +0000 [r7795] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* res/res_features.c: Issue #5980: Removing extra CR+LF in manager
|
||||
events - needs port to trunk
|
||||
|
||||
2006-01-04 21:43 +0000 [r7792] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* channels/chan_sip.c: Fixing typo in XML for video updates.
|
||||
|
||||
2006-01-04 07:06 +0000 [r7773] Russell Bryant <russell@digium.com>
|
||||
|
||||
* funcs/func_moh.c: use a more correct way of determining the size
|
||||
of the destination buffer
|
||||
|
||||
2006-01-04 05:27 +0000 [r7771] BJ Weschke <bweschke@btwtech.com>
|
||||
|
||||
* apps/app_privacy.c: Fix the 'if' clause to be true under the
|
||||
right conditions. Bug #6126
|
||||
|
||||
2006-01-03 20:22 +0000 [r7746] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* ast_expr.y (removed): remove unused 'old' expression parser
|
||||
|
||||
2006-01-03 18:15 +0000 [r7743] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_stack.c: Bug 6121 - typo in application description
|
||||
|
||||
2006-01-03 17:24 +0000 [r7740] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* include/asterisk/chanspy.h, apps/app_chanspy.c,
|
||||
apps/app_mixmonitor.c, channel.c: revert incorrect fix for bug
|
||||
#6048 from revision 7709 put in correct (simpler) fix add doxygen
|
||||
docs for channel spy 'state' values
|
||||
|
||||
2006-01-03 17:00 +0000 [r7738] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_sip.c: backport rport scanning fix from trunk (bug
|
||||
#6071)
|
||||
|
||||
2006-01-03 16:34 +0000 [r7736] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* ast_expr2f.c, ast_expr2.fl: don't leak memory for (most)
|
||||
expression evaluations
|
||||
|
||||
2006-01-02 07:31 +0000 [r7709] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_mixmonitor.c: Bug 6084 - MixMonitor after a 'cli stop
|
||||
monitor' deadlocks
|
||||
|
||||
2006-01-02 02:04 +0000 [r7706] BJ Weschke <bweschke@btwtech.com>
|
||||
|
||||
* channels/chan_sip.c, channels/chan_iax2.c: Fix compiler warnings.
|
||||
|
||||
2005-12-30 14:54 +0000 [r7677] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* channel.c: Bug 6091 - Fix race condition around uniqueid
|
||||
|
||||
2005-12-28 17:35 +0000 [r7665] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_sip.c: fix memory leak in build_rpid (issue #6070)
|
||||
|
||||
2005-12-27 21:07 +0000 [r7663] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_chanspy.c: backport fix for permissions of created
|
||||
recordings (issue #6067)
|
||||
|
||||
2005-12-27 00:07 +0000 [r7641] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_zap.c: backport fix to ensure that DSP is never
|
||||
enabled on pseudo channels
|
||||
|
||||
2005-12-26 20:32 +0000 [r7637] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* cdr/cdr_tds.c: Remove copy of code in libc, preferring code in
|
||||
utils.c (public domain code)
|
||||
|
||||
2005-12-26 18:19 +0000 [r7634] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_sip.c, channels/chan_agent.c, apps/app_sms.c,
|
||||
asterisk.c, config.c, pbx/pbx_dundi.c, apps/app_externalivr.c,
|
||||
apps/app_queue.c, channels/chan_iax2.c, cli.c,
|
||||
apps/app_chanspy.c, res/res_monitor.c: cast time_t to an int in
|
||||
printf/scanf (issue #5635)
|
||||
|
||||
2005-12-23 06:38 +0000 [r7608] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_hasnewvoicemail.c: Bug 6051 - VMCOUNT should work as
|
||||
documented and count all, not quit after finding 1
|
||||
|
||||
2005-12-23 03:01 +0000 [r7606] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* asterisk.c: add license reference to copyright notice displayed
|
||||
when CLI session begins add 'show warranty' and 'show license'
|
||||
CLI commands (still need a complete list of non-GPL components
|
||||
included in Asterisk)
|
||||
|
||||
2005-12-23 00:00 +0000 [r7605] BJ Weschke <bweschke@btwtech.com>
|
||||
|
||||
* apps/app_waitforsilence.c: Another app documentation tweak.
|
||||
|
||||
2005-12-22 22:04 +0000 [r7601] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_voicemail.c: Bug 6050 SQL requires the use of single
|
||||
ticks to delimit values, not quotes
|
||||
|
||||
2005-12-22 20:36 +0000 [r7599] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_sip.c, configs/sip.conf.sample: revert changes to
|
||||
videosupport to allow per-peer setting, since it isn't quite
|
||||
complete and there is not an obvious fix at this point
|
||||
|
||||
2005-12-22 16:17 +0000 [r7595] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_sip.c: remove stray unlock (issue #5955)
|
||||
|
||||
2005-12-21 22:23 +0000 [r7586] Josh Roberson <josh@asteriasgi.com>
|
||||
|
||||
* channels/chan_sip.c: Actually put in the per-peer settings for
|
||||
sip video, as they didn't make it in at astricon somehow, and
|
||||
I've been too busy up until now to redo it.
|
||||
|
||||
2005-12-21 20:01 +0000 [r7582] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* channels/chan_alsa.c: Allow a chan_alsa that failed to open sound
|
||||
devices to be unloaded.
|
||||
|
||||
2005-12-21 19:53 +0000 [r7580] BJ Weschke <bweschke@btwtech.com>
|
||||
|
||||
* channels/chan_agent.c: Bug #6040 - Documentation correction
|
||||
|
||||
2005-12-21 19:23 +0000 [r7577] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* pbx/pbx_ael.c: Bug 5777 - Remove parentheses on Goto in AEL, so
|
||||
that it parses correctly
|
||||
|
||||
2005-12-20 20:21 +0000 [r7557] Russell Bryant <russell@digium.com>
|
||||
|
||||
* res/res_agi.c: check array bounds when parsing arguments to AGI
|
||||
(issue #5868)
|
||||
|
||||
2005-12-20 18:05 +0000 [r7552] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_iax2.c: backport fix for reloading peer context
|
||||
(issue #6007)
|
||||
|
||||
2005-12-20 17:34 +0000 [r7550] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_directed_pickup.c: backport fix for segfault on directed
|
||||
pickup when no CDR is available (issue #5998)
|
||||
|
||||
2005-12-20 12:58 +0000 [r7546] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* apps/app_meetme.c: backport fix for larger-than-20ms-frames from
|
||||
trunk (bug #5697)
|
||||
|
||||
2005-12-19 23:47 +0000 [r7529] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_sip.c: I messed up and accidently committed this to
|
||||
the trunk first ... - add note on required values of sip_methods
|
||||
struct - remove duplicate function prototype - remove duplicate
|
||||
ast_mutex_lock (issue #6025)
|
||||
|
||||
2005-12-19 19:06 +0000 [r7523] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* file.c: Bug 5988 - record append option not working
|
||||
|
||||
2005-12-19 05:38 +0000 [r7521] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* cdr.c: Bug 6026 - segfault for the sequence NoCDR(),
|
||||
SetAMAFlags()
|
||||
|
||||
2005-12-17 18:55 +0000 [r7519] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* doc/README.ael: Document that curley braces must be on the same
|
||||
line as the keyword.
|
||||
|
||||
2005-12-17 17:19 +0000 [r7517] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_chanspy.c: Bug 6009 - off by one error
|
||||
|
||||
2005-12-17 03:59 +0000 [r7515] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_sip.c: Max-Forwards headers must only be present on
|
||||
requests, not responses
|
||||
|
||||
2005-12-17 03:44 +0000 [r7513] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_sip.c: forcibly expire previous subscriptions from
|
||||
a peer when they resubscribe (keeps them from building up and
|
||||
waiting for expiration, and stops us sending unwanted NOTIFY
|
||||
messages to devices)
|
||||
|
||||
2005-12-17 02:20 +0000 [r7510] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* build_tools/make_svn_branch_name: fix some buglet when building
|
||||
team branch version strings
|
||||
|
||||
2005-12-17 01:02 +0000 [r7508] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* include/asterisk/linkedlists.h: We want to check the previous
|
||||
value, not the current value (which was just changed).
|
||||
|
||||
2005-12-16 00:49 +0000 [r7497] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_cut.c: First field is truncated
|
||||
|
||||
2005-12-15 10:52 +0000 [r7490] Christian Richter <christian.richter@beronet.com>
|
||||
|
||||
* doc/README.misdn, channels/misdn/mISDNuser.patch (added),
|
||||
channels/misdn/isdn_lib_intern.h, channels/misdn/mISDN.patch
|
||||
(added), channels/misdn/isdn_lib.h, channels/chan_misdn.c,
|
||||
channels/misdn/Makefile, channels/misdn/chan_misdn_config.h,
|
||||
channels/misdn/ie.c, channels/chan_misdn_config.c,
|
||||
channels/misdn/isdn_msg_parser.c, channels/Makefile,
|
||||
channels/misdn/isdn_lib.c: * Added mISDN/mISDNuser Echo cancel
|
||||
Patch * Fixed Makefiles so that chan_misdn can be compiled again
|
||||
* added some hints, that mISDN cannot be compiled against gcc-4,
|
||||
SMP, Spinlock Debug * fixed some Minor issues in chan_misdn,
|
||||
regarding Type Of Number and Presentation
|
||||
|
||||
2005-12-15 02:51 +0000 [r7482] BJ Weschke <bweschke@btwtech.com>
|
||||
|
||||
* channel.c: Bug #6003 - Don't free the channel structure until
|
||||
after having sent the manager event.
|
||||
|
||||
2005-12-13 18:54 +0000 [r7470] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* doc/README.variables: clarify substring documentation
|
||||
|
||||
2005-12-13 16:06 +0000 [r7468] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* utils.c: correct broken math in tvfix() for timestamp values over
|
||||
one million
|
||||
|
||||
2005-12-13 05:53 +0000 [r7453] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* apps/app_dial.c: restore ability of caller to hangup calls that
|
||||
are still ringing (issue #5839)
|
||||
|
||||
2005-12-13 05:14 +0000 [r7451] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_sip.c, pbx.c: ensure that hangups while incoming
|
||||
calls are in early state are handled properly (issue #5919)
|
||||
|
||||
2005-12-13 04:43 +0000 [r7449] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_agent.c: only report AGENT_IDLE for callback mode
|
||||
agents when they are actually idle (issue #5902)
|
||||
|
||||
2005-12-13 04:25 +0000 [r7448] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* app.c: use the stream's current point when pausing/unpausing,
|
||||
instead of elapsed time (which doesn't work when the stream has
|
||||
been skipped forward or backward) (issue #5897)
|
||||
|
||||
2005-12-12 17:30 +0000 [r7435] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* apps/app_externalivr.c: set all the child file descriptors to
|
||||
non-blocking so that we don't hang if the child fails to send a
|
||||
newline-terminated command or error message
|
||||
|
||||
2005-12-12 17:19 +0000 [r7433] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* include/asterisk/linkedlists.h: Typo
|
||||
|
||||
2005-12-11 06:08 +0000 [r7430] Russell Bryant <russell@digium.com>
|
||||
|
||||
* utils/astman.c: silence a couple of compiler warnings about
|
||||
pointer signedness
|
||||
|
||||
2005-12-11 01:26 +0000 [r7429] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* include/asterisk/linkedlists.h: Bug 5965 - major bug in
|
||||
AST_LIST_REMOVE
|
||||
|
||||
2005-12-11 01:15 +0000 [r7427] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_voicemail.c: Bug 5967
|
||||
|
||||
2005-12-10 18:10 +0000 [r7425] BJ Weschke <bweschke@btwtech.com>
|
||||
|
||||
* channels/chan_zap.c: Bug #5877 Make sure the digit string from
|
||||
E&M wink DNIS collection is properly null terminated as it grows.
|
||||
|
||||
2005-12-08 23:45 +0000 [r7406] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_voicemail.c: Bug 5960
|
||||
|
||||
2005-12-08 23:32 +0000 [r7404] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* configs/res_odbc.conf.sample: Documenting two keywords that were
|
||||
previously missing
|
||||
|
||||
2005-12-08 01:05 +0000 [r7386] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* pbx.c: initialize the buffer before using it...
|
||||
|
||||
2005-12-07 20:46 +0000 [r7382] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* pbx.c: ensure that hints are allowed to use global variable
|
||||
references
|
||||
|
||||
2005-12-06 Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* Asterisk 1.2.1 Released
|
||||
|
||||
2005-12-06 00:19 +0000 [r7349] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* contrib/firmware/iax/iaxy.bin: replace with unmodified file
|
||||
|
||||
2005-12-06 00:08 +0000 [r7346-7347] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* contrib/firmware/iax/iaxy.bin: _really_ don't mess with line
|
||||
endings
|
||||
|
||||
* contrib/firmware/iax/iaxy.bin: don't try to expand keywords in
|
||||
this file
|
||||
|
||||
2005-12-06 00:02 +0000 [r7345] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* contrib/firmware/iax/iaxy.bin: set this file to binary mode, so
|
||||
it won't be mangled on export/checkout
|
||||
|
||||
2005-12-05 06:47 +0000 [r7340] Russell Bryant <russell@digium.com>
|
||||
|
||||
* Makefile: remove ASTERISKVERSIONNUM from the version string given
|
||||
to doxygen
|
||||
|
||||
2005-12-05 00:09 +0000 [r7337] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_queue.c: don't delete dynamic queue members when
|
||||
reloading the static members from a realtime database (issue
|
||||
#5922)
|
||||
|
||||
2005-12-05 00:01 +0000 [r7335] Russell Bryant <russell@digium.com>
|
||||
|
||||
* channels/chan_sip.c: fix the order of arguments to an error
|
||||
message (issue #5927)
|
||||
|
||||
2005-12-04 18:03 +0000 [r7329] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* build_tools/make_svn_branch_name: use a more efficient way to get
|
||||
the revision number, that will also report if the working copy
|
||||
contains uncommitted modifications
|
||||
|
||||
2005-12-03 19:55 +0000 [r7310] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* apps/app_voicemail.c: Bug 5925: check for "Unknown", as that's
|
||||
what app_voicemail puts into the field for Unknown callerid Also,
|
||||
remove useless res checks (initialized to 0; never set)
|
||||
|
||||
2005-12-03 01:24 +0000 [r7299] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* configs/sip.conf.sample: Documenting the default registerattempts
|
||||
setting as 0, continue hammering the server for ever and ever ;-)
|
||||
|
||||
2005-12-02 21:12 +0000 [r7285] Tilghman Lesher <tilghman@mail.jeffandtilghman.com>
|
||||
|
||||
* contrib/init.d/rc.debian.asterisk,
|
||||
contrib/init.d/rc.mandrake.asterisk,
|
||||
contrib/init.d/rc.redhat.asterisk,
|
||||
contrib/init.d/rc.gentoo.asterisk,
|
||||
contrib/init.d/rc.mandrake.zaptel,
|
||||
contrib/init.d/rc.slackware.asterisk: Turn on executable bits for
|
||||
startup scripts, and fix bash var interpolation for Mandrake
|
||||
|
||||
2005-12-02 00:52 +0000 [r7275] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* channels/chan_sip.c: Bug #5907. Improve SIP INFO DTMF debugging
|
||||
output. (1.2 & Trunk)
|
||||
|
||||
2005-12-02 00:51 +0000 [r7274] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* apps/app_page.c, pbx.c: inherit channel variables into channels
|
||||
created by Page() application (issue #5888)
|
||||
|
||||
2005-12-02 00:42 +0000 [r7273] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* apps/app_voicemail.c, configs/voicemail.conf.sample, UPGRADE.txt:
|
||||
allow previous context-searching behavior to be used if desired
|
||||
(issue #5899)
|
||||
|
||||
2005-12-02 00:39 +0000 [r7272] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* apps/app_voicemail.c: properly handle password changes when
|
||||
mailbox is last line of config file and not followed by a newline
|
||||
(issue #5870) reformat password changing code to conform to
|
||||
coding guidelines (issue #5870)
|
||||
|
||||
2005-12-02 00:28 +0000 [r7270-7271] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channels/chan_agent.c: protect agent_bridgedchannel() from
|
||||
segfaulting when there is no bridged channel (issue #5879)
|
||||
|
||||
* channels/chan_local.c: allow variables to exist on both 'halves'
|
||||
of the Local channel (issue #5810)
|
||||
|
||||
2005-12-01 23:49 +0000 [r7269] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* apps/app_festival.c: don't block waiting for the Festival server
|
||||
forever when it goes away (issue #5882)
|
||||
|
||||
2005-12-01 23:34 +0000 [r7268] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channel.c: ensure channel's scheduling context is freed (issue
|
||||
#5788)
|
||||
|
||||
2005-12-01 23:18 +0000 [r7266] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* Makefile, patches (removed): Makefile 'update' target now
|
||||
supports updating from Subversion repositories (issue #5875)
|
||||
remove support for 'patches' subdirectory, it's no longer useful
|
||||
|
||||
2005-12-01 23:18 +0000 [r7265] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* doc/README.misdn: Changing bug report address to the Asterisk
|
||||
issue tracker
|
||||
|
||||
2005-12-01 22:21 +0000 [r7263] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* doc/README.jitterbuffer, doc/README.realtime: Removing references
|
||||
to 1.1dev, replacing with 1.2, in documentation files.
|
||||
|
||||
2005-12-01 21:38 +0000 [r7261] Olle Johansson <oej@edvina.net>
|
||||
|
||||
* doc/README.misdn: Fixing some spelling errors, as well as
|
||||
changing "cvs" to "subversion" in misdn documentation.
|
||||
|
||||
2005-12-01 19:25 +0000 [r7257] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* build_tools/make_svn_branch_name: ensure that 'svn info' output
|
||||
is in the expected language for the script to parse (issue #5880)
|
||||
|
||||
2005-12-01 02:33 +0000 [r7251] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_externalivr.c: use ast_app_separate_args to split
|
||||
arguments (issue #5686)
|
||||
|
||||
2005-12-01 01:19 +0000 [r7249] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_queue.c: fix queue weight feature - compare member
|
||||
interfaces instead of pointers to the members, since each queue
|
||||
has its own list of members. (issue #5863)
|
||||
|
||||
2005-12-01 00:44 +0000 [r7247] Russell Bryant <russell@digium.com>
|
||||
|
||||
* build_tools/make_svn_branch_name: use '=' instead of '==' for
|
||||
string comparisons. /bin/bash is ok with this, but /bin/sh is
|
||||
not. (issue #5885)
|
||||
|
||||
2005-11-30 21:31 +0000 [r7244] Russell Bryant <russell@digium.com>
|
||||
|
||||
* redhat/asterisk (removed), Makefile: remove outdated redhat init
|
||||
script and provide the updated one in 'make rpm' (issue #5786)
|
||||
|
||||
2005-11-30 21:24 +0000 [r7242] Russell Bryant <russell@digium.com>
|
||||
|
||||
* contrib/init.d/rc.debian.asterisk,
|
||||
contrib/init.d/rc.redhat.asterisk: Comment out LD_ASSUME_KERNEL
|
||||
by default. Print error messages if the asterisk executable or
|
||||
the asterisk configuration directory are not found. (issue #5785,
|
||||
#5708)
|
||||
|
||||
2005-11-30 17:39 +0000 [r7234] Russell Bryant <russell@digium.com>
|
||||
|
||||
* apps/app_dial.c: fix DIALEDTIME when call has not been answered
|
||||
(issue #5862)
|
||||
|
||||
2005-11-30 14:27 +0000 [r7233] Russell Bryant <russell@digium.com>
|
||||
|
||||
* rtp.c: do not allow an rtp message with zero type (issue #5749)
|
||||
|
||||
2005-11-30 07:22 +0000 [r7231] Russell Bryant <russell@digium.com>
|
||||
|
||||
* pbx.c: fix hint case sensitivity (issue #5856)
|
||||
|
||||
2005-11-30 05:26 +0000 [r7228] Russell Bryant <russell@digium.com>
|
||||
|
||||
* configs/sip.conf.sample: add description of the "fromdomain"
|
||||
option (issue #5874)
|
||||
|
||||
2005-11-30 03:52 +0000 [r7227] Josh Roberson <josh@asteriasgi.com>
|
||||
|
||||
* apps/app_voicemail.c, UPGRADE.txt, ChangeLog: backport fix from
|
||||
trunk
|
||||
|
||||
2005-11-30 03:37 +0000 [r7226] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* doc/cdr.txt, doc/CODING-GUIDELINES, include/asterisk.h,
|
||||
doc/README.mp3: remove remaining CVS references
|
||||
|
||||
2005-11-30 03:20 +0000 [r7224] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* channel.c: port memory leak fix from rev 7223 in trunk
|
||||
|
||||
2005-11-28 04:01 +0000 [r7208] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* Makefile, build_tools/make_svn_branch_name (added): port version
|
||||
string computation from trunk
|
||||
|
||||
2005-11-27 16:04 +0000 [r7199] Kevin P. Fleming <kpfleming@digium.com>
|
||||
|
||||
* / (added): branch renames remove unneeded branches
|
||||
|
||||
2005-11-29 Josh Roberson <josh@asteriasgi.com>
|
||||
|
||||
* apps/app_voicemail.c: Only look in 'default' context when no context defined to VoiceMailMain(). (issue #5887)
|
||||
|
4
Makefile
4
Makefile
@@ -105,6 +105,9 @@ BUSYDETECT+= #-DBUSYDETECT_TONEONLY
|
||||
# Don't use together with -DBUSYDETECT_TONEONLY
|
||||
BUSYDETECT+= #-DBUSYDETECT_COMPARE_TONE_AND_SILENCE
|
||||
|
||||
# Comment this if you want to disable MIDCOM
|
||||
MIDCOM = -DMIDCOM
|
||||
|
||||
ifneq ($(OSARCH),SunOS)
|
||||
ASTLIBDIR=$(INSTALL_PREFIX)/usr/lib/asterisk
|
||||
ASTVARLIBDIR=$(INSTALL_PREFIX)/var/lib/asterisk
|
||||
@@ -331,6 +334,7 @@ ASTCFLAGS+= $(DEBUG_THREADS)
|
||||
ASTCFLAGS+= $(TRACE_FRAMES)
|
||||
ASTCFLAGS+= $(MALLOC_DEBUG)
|
||||
ASTCFLAGS+= $(BUSYDETECT)
|
||||
ASTCFLAGS+= $(MIDCOM)
|
||||
ASTCFLAGS+= $(OPTIONS)
|
||||
ASTCFLAGS+= -fomit-frame-pointer
|
||||
SUBDIRS=res channels pbx apps codecs formats agi cdr funcs utils stdtime
|
||||
|
8
README
8
README
@@ -164,6 +164,14 @@ parameters. For example, the line "channel => 25-47" creates objects for
|
||||
the channels 25 through 47 of the card, obtaining the settings
|
||||
from the variables specified above.
|
||||
|
||||
* NETWORK SECURITY DEVICES
|
||||
|
||||
This release of Asterisk contains support for network security devices
|
||||
manufactured by Ranch Networks, Inc., using their MIDCOM interface
|
||||
library. You will need the companion libmidcom-0.1.0.tar.gz file to
|
||||
build the library. Contact Ranch Networks' support department for assistance
|
||||
in building and configuring MIDCOM support.
|
||||
|
||||
* SPECIAL NOTE ON TIME
|
||||
|
||||
Those using SIP phones should be aware that Asterisk is sensitive to
|
||||
|
@@ -1,8 +0,0 @@
|
||||
About Hold Music
|
||||
================
|
||||
Digium has licensed the music included with
|
||||
the Asterisk distribution From FreePlayMusic
|
||||
for use and distribution with Asterisk. It
|
||||
is licensed ONLY for use as hold music within
|
||||
an Asterisk based PBX.
|
||||
|
22
README.opsound
Normal file
22
README.opsound
Normal file
@@ -0,0 +1,22 @@
|
||||
About Hold Music
|
||||
================
|
||||
These files were obtained from http://opsound.org, where the authors placed them
|
||||
under the Creative Commons Attribution-Share Alike 2.5 license, a copy of which
|
||||
may be found at http://creativecommons.org.
|
||||
|
||||
Credits
|
||||
================
|
||||
macroform-cold_day - Paul Shuler (Macroform)
|
||||
paulshuler@gmail.com - http://macroform.bandcamp.com/
|
||||
|
||||
macroform-robot_dity - Paul Shuler (Macroform)
|
||||
paulshuler@gmail.com - http://macroform.bandcamp.com/
|
||||
|
||||
macroform-the_simplicity - Paul Shuler (Macroform)
|
||||
paulshuler@gmail.com - http://macroform.bandcamp.com/
|
||||
|
||||
manolo_camp-morning_coffee - Manolo Camp
|
||||
beatbastard@gmx.net - http://ccmixter.org/people/ManoloCamp
|
||||
|
||||
reno_project-system - Reno Project
|
||||
renoproject@hotmail.com - http://www.jamendo.com/en/album/23661
|
8
app.c
8
app.c
@@ -316,8 +316,12 @@ int ast_dtmf_stream(struct ast_channel *chan,struct ast_channel *peer,char *digi
|
||||
}
|
||||
}
|
||||
}
|
||||
if (peer)
|
||||
res = ast_autoservice_stop(peer);
|
||||
if (peer) {
|
||||
/* Stop autoservice on the peer channel, but don't overwrite any error condition
|
||||
that has occurred previously while acting on the primary channel */
|
||||
if (ast_autoservice_stop(peer) && !res)
|
||||
res = -1;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
@@ -161,7 +161,7 @@ static char *descrip =
|
||||
" S(x) - Hang up the call after 'x' seconds *after* the called party has\n"
|
||||
" answered the call.\n"
|
||||
" t - Allow the called party to transfer the calling party by sending the\n"
|
||||
" DTMF sequence defiend in features.conf.\n"
|
||||
" DTMF sequence defined in features.conf.\n"
|
||||
" T - Allow the calling party to transfer the called party by sending the\n"
|
||||
" DTMF sequence defined in features.conf.\n"
|
||||
" w - Allow the called party to enable recording of the call by sending\n"
|
||||
|
@@ -175,7 +175,8 @@ static int send_waveform_to_channel(struct ast_channel *chan, char *waveform, in
|
||||
if (chan->_state != AST_STATE_UP)
|
||||
ast_answer(chan);
|
||||
ast_stopstream(chan);
|
||||
|
||||
ast_indicate(chan, -1);
|
||||
|
||||
owriteformat = chan->writeformat;
|
||||
res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
|
||||
if (res < 0) {
|
||||
|
@@ -1630,7 +1630,8 @@ static struct ast_conference *find_conf(struct ast_channel *chan, char *confno,
|
||||
if (dynamic_pin) {
|
||||
if (dynamic_pin[0] == 'q') {
|
||||
/* Query the user to enter a PIN */
|
||||
ast_app_getdata(chan, "conf-getpin", dynamic_pin, AST_MAX_EXTENSION - 1, 0);
|
||||
if (ast_app_getdata(chan, "conf-getpin", dynamic_pin, AST_MAX_EXTENSION - 1, 0) < 0)
|
||||
return NULL;
|
||||
}
|
||||
cnf = build_conf(confno, dynamic_pin, "", make, dynamic);
|
||||
} else {
|
||||
|
@@ -445,7 +445,7 @@ static void apply_option(struct ast_vm_user *vmu, const char *var, const char *v
|
||||
ast_copy_string(vmu->language, value, sizeof(vmu->language));
|
||||
} else if (!strcasecmp(var, "tz")) {
|
||||
ast_copy_string(vmu->zonetag, value, sizeof(vmu->zonetag));
|
||||
} else if (!strcasecmp(var, "delete")) {
|
||||
} else if (!strcasecmp(var, "delete") || !strcasecmp(var, "deletevoicemail")) {
|
||||
ast_set2_flag(vmu, ast_true(value), VM_DELETE);
|
||||
} else if (!strcasecmp(var, "saycid")){
|
||||
ast_set2_flag(vmu, ast_true(value), VM_SAYCID);
|
||||
@@ -2613,8 +2613,8 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
|
||||
}
|
||||
}
|
||||
if (ast_fileexists(fn, NULL, NULL)) {
|
||||
notify_new_message(chan, vmu, msgnum, duration, fmt, chan->cid.cid_num, chan->cid.cid_name);
|
||||
STORE(dir, vmu->mailbox, vmu->context, msgnum);
|
||||
notify_new_message(chan, vmu, msgnum, duration, fmt, chan->cid.cid_num, chan->cid.cid_name);
|
||||
DISPOSE(dir, msgnum);
|
||||
}
|
||||
pbx_builtin_setvar_helper(chan, "VMSTATUS", "SUCCESS");
|
||||
@@ -4764,13 +4764,14 @@ static int vm_tempgreeting(struct ast_channel *chan, struct ast_vm_user *vmu, st
|
||||
while((cmd >= 0) && (cmd != 't')) {
|
||||
if (cmd)
|
||||
retries = 0;
|
||||
RETRIEVE(prefile, -1);
|
||||
if (ast_fileexists(prefile, NULL, NULL) > 0) {
|
||||
switch (cmd) {
|
||||
case '1':
|
||||
cmd = play_record_review(chan,"vm-rec-temp",prefile, maxgreet, fmtc, 0, vmu, &duration, NULL, record_gain);
|
||||
break;
|
||||
case '2':
|
||||
ast_filedelete(prefile, NULL);
|
||||
DELETE(prefile, -1, prefile);
|
||||
ast_play_and_wait(chan,"vm-tempremoved");
|
||||
cmd = 't';
|
||||
break;
|
||||
@@ -4794,6 +4795,7 @@ static int vm_tempgreeting(struct ast_channel *chan, struct ast_vm_user *vmu, st
|
||||
play_record_review(chan,"vm-rec-temp",prefile, maxgreet, fmtc, 0, vmu, &duration, NULL, record_gain);
|
||||
cmd = 't';
|
||||
}
|
||||
DISPOSE(prefile, -1);
|
||||
}
|
||||
if (cmd == 't')
|
||||
cmd = 0;
|
||||
@@ -5645,10 +5647,10 @@ static int vm_box_exists(struct ast_channel *chan, void *data)
|
||||
static int vmauthenticate(struct ast_channel *chan, void *data)
|
||||
{
|
||||
struct localuser *u;
|
||||
char *s = data, *user=NULL, *context=NULL, mailbox[AST_MAX_EXTENSION];
|
||||
char *s = data, *user=NULL, *context=NULL, mailbox[AST_MAX_EXTENSION] = "";
|
||||
struct ast_vm_user vmus;
|
||||
char *options = NULL;
|
||||
int silent = 0;
|
||||
int silent = 0, skipuser = 0;
|
||||
int res = -1;
|
||||
|
||||
LOCAL_USER_ADD(u);
|
||||
@@ -5665,6 +5667,9 @@ static int vmauthenticate(struct ast_channel *chan, void *data)
|
||||
s = user;
|
||||
user = strsep(&s, "@");
|
||||
context = strsep(&s, "");
|
||||
if (!ast_strlen_zero(user))
|
||||
skipuser++;
|
||||
ast_copy_string(mailbox, user, sizeof(mailbox));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5672,9 +5677,10 @@ static int vmauthenticate(struct ast_channel *chan, void *data)
|
||||
silent = (strchr(options, 's')) != NULL;
|
||||
}
|
||||
|
||||
if (!vm_authenticate(chan, mailbox, sizeof(mailbox), &vmus, context, NULL, 0, 3, silent)) {
|
||||
if (!vm_authenticate(chan, mailbox, sizeof(mailbox), &vmus, context, NULL, skipuser, 3, silent)) {
|
||||
pbx_builtin_setvar_helper(chan, "AUTH_MAILBOX", mailbox);
|
||||
pbx_builtin_setvar_helper(chan, "AUTH_CONTEXT", vmus.context);
|
||||
ast_play_and_wait(chan, "auth-thankyou");
|
||||
res = 0;
|
||||
}
|
||||
|
||||
|
10
asterisk.c
10
asterisk.c
@@ -127,7 +127,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
||||
|
||||
/*! \brief Welcome message when starting a CLI interface */
|
||||
#define WELCOME_MESSAGE \
|
||||
ast_verbose("Asterisk " ASTERISK_VERSION ", Copyright (C) 1999 - 2005 Digium, Inc. and others.\n"); \
|
||||
ast_verbose("Asterisk " ASTERISK_VERSION ", Copyright (C) 1999 - 2006 Digium, Inc. and others.\n"); \
|
||||
ast_verbose("Created by Mark Spencer <markster@digium.com>\n"); \
|
||||
ast_verbose("Asterisk comes with ABSOLUTELY NO WARRANTY; type 'show warranty' for details.\n"); \
|
||||
ast_verbose("This is free software, with components licensed under the GNU General Public\n"); \
|
||||
@@ -2138,6 +2138,10 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
if (option_console && !option_verbose)
|
||||
ast_verbose("[ Reading Master Configuration ]");
|
||||
ast_readconfig();
|
||||
|
||||
if (option_dumpcore) {
|
||||
struct rlimit l;
|
||||
memset(&l, 0, sizeof(l));
|
||||
@@ -2148,10 +2152,6 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
if (option_console && !option_verbose)
|
||||
ast_verbose("[ Reading Master Configuration ]");
|
||||
ast_readconfig();
|
||||
|
||||
if ((!rungroup) && !ast_strlen_zero(ast_config_AST_RUN_GROUP))
|
||||
rungroup = ast_config_AST_RUN_GROUP;
|
||||
if ((!runuser) && !ast_strlen_zero(ast_config_AST_RUN_USER))
|
||||
|
@@ -576,7 +576,7 @@ struct ast_channel *ast_channel_alloc(int needqueue)
|
||||
tmp->fds[AST_MAX_FDS-1] = tmp->alertpipe[0];
|
||||
/* And timing pipe */
|
||||
tmp->fds[AST_MAX_FDS-2] = tmp->timingfd;
|
||||
strcpy(tmp->name, "**Unkown**");
|
||||
strcpy(tmp->name, "**Unknown**");
|
||||
/* Initial state */
|
||||
tmp->_state = AST_STATE_DOWN;
|
||||
tmp->streamid = -1;
|
||||
|
@@ -97,6 +97,11 @@ ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libpri.so.1)$(wildcard $(CROSS
|
||||
ZAPPRI=-lpri
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/asterisk/modules/res_netsec.so)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/asterisk/modules/res_netsec.so),)
|
||||
CFLAGS+=-DSIP_MIDCOM
|
||||
# NETSEC=-lnetsec -lssl -lcrypto -lstdc++
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libmfcr2.so.1)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/lib/libmfcr2.so.1),)
|
||||
CFLAGS+=-DZAPATA_R2
|
||||
ZAPR2=-lmfcr2
|
||||
@@ -207,7 +212,7 @@ chan_zap.so: chan_zap.o
|
||||
$(CC) $(SOLINK) -o $@ $< $(ZAPPRI) $(ZAPR2) -ltonezone
|
||||
|
||||
chan_sip.so: chan_sip.o
|
||||
$(CC) $(SOLINK) -o $@ ${CYGSOLINK} chan_sip.o ${CYGSOLIB}
|
||||
$(CC) $(SOLINK) -o $@ ${CYGSOLINK} chan_sip.o ${CYGSOLIB} ${NETSEC}
|
||||
|
||||
chan_agent.so: chan_agent.o
|
||||
$(CC) $(SOLINK) -o $@ ${CYGSOLINK} chan_agent.o ${CYGSOLIB} ${CYG_CHAN_AGENT}
|
||||
|
@@ -102,7 +102,7 @@ static const char descrip2[] =
|
||||
static const char descrip3[] =
|
||||
" AgentMonitorOutgoing([options]):\n"
|
||||
"Tries to figure out the id of the agent who is placing outgoing call based on\n"
|
||||
"comparision of the callerid of the current interface and the global variable \n"
|
||||
"comparison of the callerid of the current interface and the global variable \n"
|
||||
"placed by the AgentCallbackLogin application. That's why it should be used only\n"
|
||||
"with the AgentCallbackLogin app. Uses the monitoring functions in chan_agent \n"
|
||||
"instead of Monitor application. That have to be configured in the agents.conf file.\n"
|
||||
@@ -144,7 +144,7 @@ static char moh[80] = "default";
|
||||
|
||||
/** Persistent Agents astdb family */
|
||||
static const char pa_family[] = "/Agents";
|
||||
/** The maximum lengh of each persistent member agent database entry */
|
||||
/** The maximum length of each persistent member agent database entry */
|
||||
#define PA_MAX_LEN 2048
|
||||
/** queues.conf [general] option */
|
||||
static int persistent_agents = 0;
|
||||
@@ -1051,7 +1051,7 @@ static int read_agent_config(void)
|
||||
urlprefix[0] = '\0';
|
||||
savecallsin[0] = '\0';
|
||||
|
||||
/* Read in [general] section for persistance */
|
||||
/* Read in [general] section for persistence */
|
||||
if ((general_val = ast_variable_retrieve(cfg, "general", "persistentagents")))
|
||||
persistent_agents = ast_true(general_val);
|
||||
|
||||
@@ -1695,6 +1695,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
|
||||
char agent_goodbye[AST_MAX_FILENAME_LEN];
|
||||
int update_cdr = updatecdr;
|
||||
char *filename = "agent-loginok";
|
||||
char tmpchan[AST_MAX_BUF] = "";
|
||||
|
||||
LOCAL_USER_ADD(u);
|
||||
|
||||
@@ -1790,7 +1791,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
|
||||
gettimeofday(&p->lastdisc, NULL);
|
||||
p->lastdisc.tv_sec++;
|
||||
|
||||
/* Set Channel Specific Agent Overides */
|
||||
/* Set Channel Specific Agent Overrides */
|
||||
if (pbx_builtin_getvar_helper(chan, "AGENTACKCALL") && strlen(pbx_builtin_getvar_helper(chan, "AGENTACKCALL"))) {
|
||||
if (!strcasecmp(pbx_builtin_getvar_helper(chan, "AGENTACKCALL"), "always"))
|
||||
p->ackcall = 2;
|
||||
@@ -1818,14 +1819,13 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
|
||||
if (option_verbose > 2)
|
||||
ast_verbose(VERBOSE_PREFIX_3 "Saw variable AGENTWRAPUPTIME=%s, setting wrapuptime to: %d for Agent '%s'.\n",tmpoptions,p->wrapuptime,p->agent);
|
||||
}
|
||||
/* End Channel Specific Agent Overides */
|
||||
/* End Channel Specific Agent Overrides */
|
||||
if (!p->chan) {
|
||||
char last_loginchan[80] = "";
|
||||
long logintime;
|
||||
snprintf(agent, sizeof(agent), "Agent/%s", p->agent);
|
||||
|
||||
if (callbackmode) {
|
||||
char tmpchan[AST_MAX_BUF] = "";
|
||||
int pos = 0;
|
||||
/* Retrieve login chan */
|
||||
for (;;) {
|
||||
@@ -2360,7 +2360,7 @@ static void reload_agents(void)
|
||||
}
|
||||
ast_mutex_unlock(&agentlock);
|
||||
if (db_tree) {
|
||||
ast_log(LOG_NOTICE, "Agents sucessfully reloaded from database.\n");
|
||||
ast_log(LOG_NOTICE, "Agents successfully reloaded from database.\n");
|
||||
ast_db_freetree(db_tree);
|
||||
}
|
||||
}
|
||||
@@ -2417,7 +2417,7 @@ static int agent_devicestate(void *data)
|
||||
|
||||
/**
|
||||
* Initialize the Agents module.
|
||||
* This funcion is being called by Asterisk when loading the module. Among other thing it registers applications, cli commands and reads the cofiguration file.
|
||||
* This function is being called by Asterisk when loading the module. Among other thing it registers applications, cli commands and reads the cofiguration file.
|
||||
*
|
||||
* @returns int Always 0.
|
||||
*/
|
||||
|
@@ -86,6 +86,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
||||
#include "asterisk/astosp.h"
|
||||
#endif
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
#include "asterisk/res_netsec.h"
|
||||
#endif
|
||||
|
||||
#ifndef DEFAULT_USERAGENT
|
||||
#define DEFAULT_USERAGENT "Asterisk PBX"
|
||||
#endif
|
||||
@@ -679,6 +683,10 @@ static struct sip_pvt {
|
||||
|
||||
struct ast_dsp *vad; /*!< Voice Activation Detection dsp */
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
void *r;
|
||||
#endif
|
||||
|
||||
struct sip_peer *peerpoke; /*!< If this calls is to poke a peer, which one */
|
||||
struct sip_registry *registry; /*!< If this is a REGISTER call, to which registry */
|
||||
struct ast_rtp *rtp; /*!< RTP Session */
|
||||
@@ -922,6 +930,25 @@ static const struct cfsubscription_types *find_subscription_type(enum subscripti
|
||||
static int transmit_state_notify(struct sip_pvt *p, int state, int full, int substate);
|
||||
static char *gettag(struct sip_request *req, char *header, char *tagbuf, int tagbufsize);
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
static void sip_rtp_get_peer_audio_helper(void *p, struct sockaddr_in *them);
|
||||
static void sip_rtp_get_peer_video_helper(void *p, struct sockaddr_in *them);
|
||||
static void sip_rtp_get_us_audio_helper(void *p, struct sockaddr_in *sin);
|
||||
static void sip_rtp_get_us_video_helper(void *p, struct sockaddr_in *vsin);
|
||||
static void sip_map_hook_struct(void *p, void *r);
|
||||
static void *sip_get_hook_struct(void *p);
|
||||
static int sip_get_flag_novideo(void *p);
|
||||
static int sip_cmp_sa_addr(void *p, struct sockaddr_in *addr);
|
||||
static void sip_get_recv_addr(void *p, struct in_addr *addr);
|
||||
static char *sip_get_username(void *p);
|
||||
static struct ast_channel *sip_channel_helper(void *p);
|
||||
static struct ast_channel *sip_bridged_channel_helper(void *p);
|
||||
static int sip_get_capability_helper(void *p);
|
||||
static void sip_softhangup_helper(void *p);
|
||||
|
||||
extern struct ast_sip_hook_cb *m_cb;
|
||||
#endif
|
||||
|
||||
/*! \brief Definition of this channel for PBX channel registration */
|
||||
static const struct ast_channel_tech sip_tech = {
|
||||
.type = channeltype,
|
||||
@@ -2095,6 +2122,11 @@ static void __sip_destroy(struct sip_pvt *p, int lockowner)
|
||||
if (sip_debug_test_pvt(p))
|
||||
ast_verbose("Destroying call '%s'\n", p->callid);
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb)
|
||||
m_cb->__sip_destroy_hook(p);
|
||||
#endif
|
||||
|
||||
if (dumphistory)
|
||||
sip_dump_history(p);
|
||||
|
||||
@@ -2419,6 +2451,12 @@ static int sip_hangup(struct ast_channel *ast)
|
||||
if (ast->_state != AST_STATE_UP)
|
||||
needcancel = 1;
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
/* For callee to shutdown, send "BYE" instead of "CANCEL"
|
||||
-- this needs to be verified */
|
||||
if (m_cb && ast_test_flag(p, SIP_OUTGOING)) needcancel = 0;
|
||||
#endif
|
||||
|
||||
/* Disconnect */
|
||||
p = ast->tech_pvt;
|
||||
if (p->vad) {
|
||||
@@ -4339,8 +4377,22 @@ static int add_sdp(struct sip_request *resp, struct sip_pvt *p)
|
||||
ast_rtp_get_us(p->vrtp, &vsin);
|
||||
|
||||
if (p->redirip.sin_addr.s_addr) {
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb && p->r) {
|
||||
struct sockaddr_in redirip_hook;
|
||||
char iabuf2[INET_ADDRSTRLEN];
|
||||
m_cb->ast_get_redirip_audio_hook(p->r, &redirip_hook);
|
||||
ast_log(LOG_DEBUG, "Replacing %s:%d by %s:%d in SDP before sending to %s\n", ast_inet_ntoa(iabuf, sizeof(iabuf), p->redirip.sin_addr), ntohs(p->redirip.sin_port), ast_inet_ntoa(iabuf2, sizeof(iabuf2), redirip_hook.sin_addr), ntohs(redirip_hook.sin_port), p->username);
|
||||
dest.sin_port = redirip_hook.sin_port;
|
||||
dest.sin_addr = redirip_hook.sin_addr;
|
||||
} else {
|
||||
dest.sin_port = p->redirip.sin_port;
|
||||
dest.sin_addr = p->redirip.sin_addr;
|
||||
}
|
||||
#else
|
||||
dest.sin_port = p->redirip.sin_port;
|
||||
dest.sin_addr = p->redirip.sin_addr;
|
||||
#endif
|
||||
if (p->redircodecs)
|
||||
capability = p->redircodecs;
|
||||
} else {
|
||||
@@ -4351,8 +4403,22 @@ static int add_sdp(struct sip_request *resp, struct sip_pvt *p)
|
||||
/* Determine video destination */
|
||||
if (p->vrtp) {
|
||||
if (p->vredirip.sin_addr.s_addr) {
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb && p->r) {
|
||||
struct sockaddr_in vredirip_hook;
|
||||
char iabuf2[INET_ADDRSTRLEN];
|
||||
m_cb->ast_get_vredirip_video_hook(p->r, &vredirip_hook);
|
||||
ast_log(LOG_DEBUG, "Replacing %s:%d by %s:%d in video SDP before sending to %s\n", ast_inet_ntoa(iabuf, sizeof(iabuf), p->vredirip.sin_addr), ntohs(p->vredirip.sin_port), ast_inet_ntoa(iabuf2, sizeof(iabuf2), vredirip_hook.sin_addr), ntohs(vredirip_hook.sin_port), p->username);
|
||||
vdest.sin_port = vredirip_hook.sin_port;
|
||||
vdest.sin_addr = vredirip_hook.sin_addr;
|
||||
} else {
|
||||
vdest.sin_port = p->vredirip.sin_port;
|
||||
vdest.sin_addr = p->vredirip.sin_addr;
|
||||
}
|
||||
#else
|
||||
vdest.sin_port = p->vredirip.sin_port;
|
||||
vdest.sin_addr = p->vredirip.sin_addr;
|
||||
#endif
|
||||
} else {
|
||||
vdest.sin_addr = p->ourip;
|
||||
vdest.sin_port = vsin.sin_port;
|
||||
@@ -4509,6 +4575,14 @@ static int transmit_response_with_sdp(struct sip_pvt *p, char *msg, struct sip_r
|
||||
} else {
|
||||
ast_log(LOG_ERROR, "Can't add SDP to response, since we have no RTP session allocated. Call-ID %s\n", p->callid);
|
||||
}
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb) {
|
||||
if (!m_cb->transmit_response_with_sdp_hook(p)) {
|
||||
ast_log(LOG_NOTICE, "Failed transmit_response_with_sdp_hook()\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return send_response(p, &resp, retrans, seqno);
|
||||
}
|
||||
|
||||
@@ -4570,6 +4644,19 @@ static int determine_firstline_parts( struct sip_request *req )
|
||||
static int transmit_reinvite_with_sdp(struct sip_pvt *p)
|
||||
{
|
||||
struct sip_request req;
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb) {
|
||||
if (!m_cb->transmit_reinvite_with_sdp_hook(p)) {
|
||||
ast_log(LOG_NOTICE, "Failed transmit_reinvite_with_sdp_hook()\n");
|
||||
if (p->owner)
|
||||
ast_queue_hangup(p->owner);
|
||||
else
|
||||
ast_set_flag(p, SIP_NEEDDESTROY);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (ast_test_flag(p, SIP_REINVITE_UPDATE))
|
||||
reqprep(&req, p, SIP_UPDATE, 0, 1);
|
||||
else
|
||||
@@ -9467,6 +9554,16 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
|
||||
p->authtries = 0;
|
||||
if (!strcasecmp(get_header(req, "Content-Type"), "application/sdp")) {
|
||||
process_sdp(p, req);
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb) {
|
||||
if (!m_cb->handle_response_invite_hook(p)) {
|
||||
if (p->owner)
|
||||
ast_queue_hangup(p->owner);
|
||||
else
|
||||
ast_set_flag(p, SIP_NEEDDESTROY);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Parse contact header for continued conversation */
|
||||
@@ -10308,6 +10405,19 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int
|
||||
ast_set_flag(p, SIP_NEEDDESTROY);
|
||||
return -1;
|
||||
}
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb) {
|
||||
if (!m_cb->handle_request_invite_hook((void *)p)) {
|
||||
ast_log(LOG_NOTICE, "Failed to NAT for (%s)\n", get_header(req, "From"));
|
||||
if (ignore)
|
||||
transmit_response(p, "403 Forbidden", req);
|
||||
else
|
||||
transmit_response_reliable(p, "403 Forbidden", req, 1);
|
||||
ast_set_flag(p, SIP_NEEDDESTROY);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
p->jointcapability = p->capability;
|
||||
ast_log(LOG_DEBUG, "Hm.... No sdp for the moment\n");
|
||||
@@ -12655,8 +12765,13 @@ static struct ast_rtp *sip_get_rtp_peer(struct ast_channel *chan)
|
||||
if (!p)
|
||||
return NULL;
|
||||
ast_mutex_lock(&p->lock);
|
||||
if (p->rtp && ast_test_flag(p, SIP_CAN_REINVITE))
|
||||
if (p->rtp && ast_test_flag(p, SIP_CAN_REINVITE)) {
|
||||
rtp = p->rtp;
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb)
|
||||
m_cb->ast_rtp_nat_us_audio_hook(rtp, p->r); /* change the ip port in rtp */
|
||||
#endif
|
||||
}
|
||||
ast_mutex_unlock(&p->lock);
|
||||
return rtp;
|
||||
}
|
||||
@@ -12671,8 +12786,13 @@ static struct ast_rtp *sip_get_vrtp_peer(struct ast_channel *chan)
|
||||
return NULL;
|
||||
|
||||
ast_mutex_lock(&p->lock);
|
||||
if (p->vrtp && ast_test_flag(p, SIP_CAN_REINVITE))
|
||||
if (p->vrtp && ast_test_flag(p, SIP_CAN_REINVITE)) {
|
||||
rtp = p->vrtp;
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb)
|
||||
m_cb->ast_rtp_nat_us_video_hook(rtp, p->r); /* change the ip port in rtp */
|
||||
#endif
|
||||
}
|
||||
ast_mutex_unlock(&p->lock);
|
||||
return rtp;
|
||||
}
|
||||
@@ -12686,12 +12806,22 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struc
|
||||
if (!p)
|
||||
return -1;
|
||||
ast_mutex_lock(&p->lock);
|
||||
if (rtp)
|
||||
if (rtp) {
|
||||
ast_rtp_get_peer(rtp, &p->redirip);
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb)
|
||||
m_cb->ast_rtp_get_their_nat_audio_hook(rtp, p->r);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
memset(&p->redirip, 0, sizeof(p->redirip));
|
||||
if (vrtp)
|
||||
if (vrtp) {
|
||||
ast_rtp_get_peer(vrtp, &p->vredirip);
|
||||
#ifdef SIP_MIDCOM
|
||||
if (m_cb)
|
||||
m_cb->ast_rtp_get_their_nat_video_hook(vrtp, p->r);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
memset(&p->vredirip, 0, sizeof(p->vredirip));
|
||||
p->redircodecs = codecs;
|
||||
@@ -12959,6 +13089,26 @@ static struct ast_rtp_protocol sip_rtp = {
|
||||
get_codec: sip_get_codec,
|
||||
};
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
/*! \brief sip_helper: Interface structure with callbacks used to connect to midcom module --*/
|
||||
static struct ast_sip_helper_cb sip_helper = {
|
||||
ast_rtp_get_peer_audio_helper: sip_rtp_get_peer_audio_helper,
|
||||
ast_rtp_get_peer_video_helper: sip_rtp_get_peer_video_helper,
|
||||
ast_rtp_get_us_audio_helper: sip_rtp_get_us_audio_helper,
|
||||
ast_rtp_get_us_video_helper: sip_rtp_get_us_video_helper,
|
||||
ast_map_hook_struct: sip_map_hook_struct,
|
||||
ast_get_hook_struct: sip_get_hook_struct,
|
||||
ast_get_flag_novideo: sip_get_flag_novideo,
|
||||
ast_cmp_sa_addr: sip_cmp_sa_addr,
|
||||
ast_get_recv_addr: sip_get_recv_addr,
|
||||
ast_get_username: sip_get_username,
|
||||
ast_channel_helper: sip_channel_helper,
|
||||
ast_bridged_channel_helper: sip_bridged_channel_helper,
|
||||
ast_get_capability_helper: sip_get_capability_helper,
|
||||
ast_softhangup_helper: sip_softhangup_helper,
|
||||
};
|
||||
#endif
|
||||
|
||||
/*! \brief sip_poke_all_peers: Send a poke to all known peers */
|
||||
static void sip_poke_all_peers(void)
|
||||
{
|
||||
@@ -13094,6 +13244,12 @@ int load_module()
|
||||
/* Tell the RTP subdriver that we're here */
|
||||
ast_rtp_proto_register(&sip_rtp);
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
/* Register the sip helper functions */
|
||||
if (m_cb)
|
||||
m_cb->ast_sip_helper_register(&sip_helper);
|
||||
#endif
|
||||
|
||||
/* Register dialplan applications */
|
||||
ast_register_application(app_dtmfmode, sip_dtmfmode, synopsis_dtmfmode, descrip_dtmfmode);
|
||||
|
||||
@@ -13142,6 +13298,12 @@ int unload_module()
|
||||
|
||||
ast_rtp_proto_unregister(&sip_rtp);
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
/* Unregister the sip helper functions */
|
||||
if (m_cb)
|
||||
m_cb->ast_sip_helper_unregister();
|
||||
#endif
|
||||
|
||||
ast_manager_unregister("SIPpeers");
|
||||
ast_manager_unregister("SIPshowpeer");
|
||||
|
||||
@@ -13153,7 +13315,6 @@ int unload_module()
|
||||
ast_softhangup(p->owner, AST_SOFTHANGUP_APPUNLOAD);
|
||||
p = p->next;
|
||||
}
|
||||
iflist = NULL;
|
||||
ast_mutex_unlock(&iflock);
|
||||
} else {
|
||||
ast_log(LOG_WARNING, "Unable to lock the interface list\n");
|
||||
@@ -13226,4 +13387,78 @@ char *description()
|
||||
return (char *) desc;
|
||||
}
|
||||
|
||||
#ifdef SIP_MIDCOM
|
||||
static void sip_rtp_get_peer_audio_helper(void *p, struct sockaddr_in *them)
|
||||
{
|
||||
ast_rtp_get_peer(((struct sip_pvt*)p)->rtp, them);
|
||||
}
|
||||
|
||||
static void sip_rtp_get_peer_video_helper(void *p, struct sockaddr_in *them)
|
||||
{
|
||||
ast_rtp_get_peer(((struct sip_pvt*)p)->vrtp, them);
|
||||
}
|
||||
|
||||
static void sip_rtp_get_us_audio_helper(void *p, struct sockaddr_in *sin)
|
||||
{
|
||||
ast_rtp_get_us(((struct sip_pvt*)p)->rtp, sin);
|
||||
sin->sin_addr = ((struct sip_pvt*)p)->ourip;
|
||||
}
|
||||
|
||||
static void sip_rtp_get_us_video_helper(void *p, struct sockaddr_in *vsin)
|
||||
{
|
||||
ast_rtp_get_us(((struct sip_pvt*)p)->vrtp, vsin);
|
||||
vsin->sin_addr = ((struct sip_pvt*)p)->ourip;
|
||||
}
|
||||
|
||||
static void sip_map_hook_struct(void *p, void *r)
|
||||
{
|
||||
((struct sip_pvt*)p)->r = r;
|
||||
}
|
||||
|
||||
static void *sip_get_hook_struct(void *p)
|
||||
{
|
||||
return ((struct sip_pvt*)p)->r;
|
||||
}
|
||||
|
||||
static int sip_get_flag_novideo(void *p)
|
||||
{
|
||||
return ast_test_flag((struct sip_pvt*)p, SIP_NOVIDEO);
|
||||
}
|
||||
|
||||
static int sip_cmp_sa_addr(void *p, struct sockaddr_in *addr)
|
||||
{
|
||||
return (((struct sip_pvt*)p)->sa.sin_addr.s_addr == addr->sin_addr.s_addr);
|
||||
}
|
||||
|
||||
static void sip_get_recv_addr(void *p, struct in_addr *addr)
|
||||
{
|
||||
memcpy(addr, &((struct sip_pvt *)p)->recv.sin_addr, sizeof(struct in_addr));
|
||||
}
|
||||
|
||||
static char *sip_get_username(void *p)
|
||||
{
|
||||
return ((struct sip_pvt*)p)->username;
|
||||
}
|
||||
|
||||
static struct ast_channel *sip_channel_helper(void *p)
|
||||
{
|
||||
return ((struct sip_pvt*)p)->owner;
|
||||
}
|
||||
|
||||
static struct ast_channel *sip_bridged_channel_helper(void *p)
|
||||
{
|
||||
return ast_bridged_channel(((struct sip_pvt*)p)->owner);
|
||||
}
|
||||
|
||||
static int sip_get_capability_helper(void *p)
|
||||
{
|
||||
return ((struct sip_pvt*)p)->jointcapability;
|
||||
}
|
||||
|
||||
static void sip_softhangup_helper(void *p)
|
||||
{
|
||||
if (p && ((struct sip_pvt *)p)->owner)
|
||||
ast_softhangup(((struct sip_pvt *)p)->owner, AST_SOFTHANGUP_APPUNLOAD);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@@ -172,6 +172,7 @@ sendvoicemail=yes ; Context to Send voicemail from [option 5 from the advanced m
|
||||
; This does NOT affect option 3,3 from the advanced options menu
|
||||
; delete=yes ; After notification, the voicemail is deleted from the server. [per-mailbox only]
|
||||
; This is intended for use with users who wish to receive their voicemail ONLY by email.
|
||||
; Note: deletevoicemail is provided as an equivalent option for Realtime configuration.
|
||||
; nextaftercmd=yes ; Skips to the next message after hitting 7 or 9 to delete/save current message.
|
||||
; [global option only at this time]
|
||||
; forcename=yes ; Forces a new user to record their name. A new user is
|
||||
|
@@ -11,6 +11,8 @@ separated text file.
|
||||
for an updated list of supported databases, from MySQL to MsSQL
|
||||
and text files.
|
||||
* cdr_tds supports FreeTDS databases (Among them MS SQL)
|
||||
NOTE: Please read README.tds for information on possible
|
||||
problems with the FreeTDS driver
|
||||
* cdr_sqlite supports SQlite
|
||||
* cdr_pgsql supports PostgreSQL
|
||||
|
||||
@@ -39,28 +41,28 @@ channel configuration files, like sip.conf, iax.conf etc.
|
||||
Fields of the CDR in Asterisk
|
||||
-----------------------------
|
||||
|
||||
1. accountcode: What account number to use, (string, 20 characters)
|
||||
2. src: Caller*ID number (string, 80 characters)
|
||||
3. dst: Destination extension (string, 80 characters)
|
||||
4. dcontext: Destination context (string, 80 characters)
|
||||
5. clid: Caller*ID with text (80 characters)
|
||||
6. channel: Channel used (80 characters)
|
||||
7. dstchannel: Destination channel if appropriate (80 characters)
|
||||
8. lastapp: Last application if appropriate (80 characters)
|
||||
9. lastdata: Last application data (arguments) (80 characters)
|
||||
10. start: Start of call (date/time)
|
||||
11. answer: Answer of call (date/time)
|
||||
12. end: End of call (date/time)
|
||||
13. duration: Total time in system, in seconds (integer), from dial to hangup
|
||||
14. billsec: Total time call is up, in seconds (integer), from answer to hangup
|
||||
15. disposition: What happened to the call: ANSWERED, NO ANSWER, BUSY
|
||||
16. amaflags: What flags to use: DOCUMENTATION, BILL, IGNORE etc,
|
||||
specified on a per channel basis like accountcode.
|
||||
17. user field: A user-defined field, maximum 255 characters
|
||||
1. accountcode: What account number to use, (string, 20 characters)
|
||||
2. src: Caller*ID number (string, 80 characters)
|
||||
3. dst: Destination extension (string, 80 characters)
|
||||
4. dcontext: Destination context (string, 80 characters)
|
||||
5. clid: Caller*ID with text (80 characters)
|
||||
6. channel: Channel used (80 characters)
|
||||
7. dstchannel: Destination channel if appropriate (80 characters)
|
||||
8. lastapp: Last application if appropriate (80 characters)
|
||||
9. lastdata: Last application data (arguments) (80 characters)
|
||||
10. start: Start of call (date/time)
|
||||
11. answer: Answer of call (date/time)
|
||||
12. end: End of call (date/time)
|
||||
13. duration: Total time in system, in seconds (integer), from dial to hangup
|
||||
14. billsec: Total time call is up, in seconds (integer), from answer to hangup
|
||||
15. disposition: What happened to the call: ANSWERED, NO ANSWER, BUSY
|
||||
16. amaflags: What flags to use: DOCUMENTATION, BILL, IGNORE etc,
|
||||
specified on a per channel basis like accountcode.
|
||||
17. user field: A user-defined field, maximum 255 characters
|
||||
|
||||
In some cases, uniqueid is appended:
|
||||
|
||||
* uniqueid: Unique Channel Identifier (32 characters)
|
||||
* uniqueid: Unique Channel Identifier (32 characters)
|
||||
This needs to be enabled in the source code at compile time
|
||||
|
||||
|
||||
|
@@ -48,8 +48,12 @@ static char *function_fieldqty(struct ast_channel *chan, char *cmd, char *data,
|
||||
if (delim) {
|
||||
varname = strsep(&delim, "|");
|
||||
pbx_retrieve_variable(chan, varname, &varval, workspace, sizeof(workspace), NULL);
|
||||
while (strsep(&varval, delim))
|
||||
fieldcount++;
|
||||
if (delim) {
|
||||
while (strsep(&varval, delim))
|
||||
fieldcount++;
|
||||
} else if (!ast_strlen_zero(varval)) {
|
||||
fieldcount = 1;
|
||||
}
|
||||
snprintf(buf, len, "%d", fieldcount);
|
||||
} else {
|
||||
ast_log(LOG_ERROR, "Out of memory\n");
|
||||
|
@@ -100,6 +100,11 @@ void ast_rtp_get_peer(struct ast_rtp *rtp, struct sockaddr_in *them);
|
||||
|
||||
void ast_rtp_get_us(struct ast_rtp *rtp, struct sockaddr_in *us);
|
||||
|
||||
#ifdef MIDCOM
|
||||
void ast_rtp_nat_us(struct ast_rtp *rtp, struct sockaddr_in *our_nat);
|
||||
void ast_rtp_get_their_nat(struct ast_rtp *rtp, struct sockaddr_in *their_nat);
|
||||
#endif
|
||||
|
||||
void ast_rtp_destroy(struct ast_rtp *rtp);
|
||||
|
||||
void ast_rtp_reset(struct ast_rtp *rtp);
|
||||
|
2
loader.c
2
loader.c
@@ -457,8 +457,8 @@ static int ast_resource_exists(char *resource)
|
||||
static const char *loadorder[] =
|
||||
{
|
||||
"res_",
|
||||
"chan_",
|
||||
"pbx_",
|
||||
"chan_",
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
8
logger.c
8
logger.c
@@ -461,8 +461,8 @@ int reload_logger(int rotate)
|
||||
|
||||
filesize_reload_needed = 0;
|
||||
|
||||
queue_log_init();
|
||||
init_logger_chain();
|
||||
queue_log_init();
|
||||
|
||||
if (logfiles.event_log) {
|
||||
if (eventlog) {
|
||||
@@ -589,12 +589,12 @@ int init_logger(void)
|
||||
ast_cli_register(&rotate_logger_cli);
|
||||
ast_cli_register(&logger_show_channels_cli);
|
||||
|
||||
/* initialize queue logger */
|
||||
queue_log_init();
|
||||
|
||||
/* create log channels */
|
||||
init_logger_chain();
|
||||
|
||||
/* initialize queue logger */
|
||||
queue_log_init();
|
||||
|
||||
/* create the eventlog */
|
||||
if (logfiles.event_log) {
|
||||
mkdir((char *)ast_config_AST_LOG_DIR, 0755);
|
||||
|
2
pbx.c
2
pbx.c
@@ -2029,7 +2029,7 @@ int ast_extension_state_del(int id, ast_state_cb_type callback)
|
||||
cblist = cblist->next;
|
||||
}
|
||||
|
||||
ast_mutex_lock(&hintlock);
|
||||
ast_mutex_unlock(&hintlock);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@@ -1280,10 +1280,12 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast
|
||||
if (!(monitor_app = pbx_findapp("Monitor")))
|
||||
monitor_ok=0;
|
||||
}
|
||||
if ((monitor_exec = pbx_builtin_getvar_helper(chan, "AUTO_MONITOR")))
|
||||
pbx_exec(chan, monitor_app, monitor_exec, 1);
|
||||
else if ((monitor_exec = pbx_builtin_getvar_helper(peer, "AUTO_MONITOR")))
|
||||
pbx_exec(peer, monitor_app, monitor_exec, 1);
|
||||
if (monitor_app) {
|
||||
if ((monitor_exec = pbx_builtin_getvar_helper(chan, "AUTO_MONITOR")))
|
||||
pbx_exec(chan, monitor_app, monitor_exec, 1);
|
||||
else if ((monitor_exec = pbx_builtin_getvar_helper(peer, "AUTO_MONITOR")))
|
||||
pbx_exec(peer, monitor_app, monitor_exec, 1);
|
||||
}
|
||||
}
|
||||
|
||||
set_config_flags(chan, peer, config);
|
||||
|
23
rtp.c
23
rtp.c
@@ -125,6 +125,10 @@ struct ast_rtp {
|
||||
int rtp_lookup_code_cache_code;
|
||||
int rtp_lookup_code_cache_result;
|
||||
int rtp_offered_from_local;
|
||||
|
||||
#ifdef MIDCOM
|
||||
struct sockaddr_in them_midcom_nat;
|
||||
#endif
|
||||
struct ast_rtcp *rtcp;
|
||||
};
|
||||
|
||||
@@ -1041,6 +1045,20 @@ void ast_rtp_get_us(struct ast_rtp *rtp, struct sockaddr_in *us)
|
||||
memcpy(us, &rtp->us, sizeof(rtp->us));
|
||||
}
|
||||
|
||||
#ifdef MIDCOM /* RANCH */
|
||||
void ast_rtp_nat_us(struct ast_rtp *rtp, struct sockaddr_in *our_nat)
|
||||
{
|
||||
memcpy(&rtp->them_midcom_nat, our_nat, sizeof(rtp->them_midcom_nat));
|
||||
}
|
||||
|
||||
void ast_rtp_get_their_nat(struct ast_rtp *rtp, struct sockaddr_in *their_nat)
|
||||
{
|
||||
their_nat->sin_family = AF_INET;
|
||||
their_nat->sin_port = rtp->them_midcom_nat.sin_port;
|
||||
their_nat->sin_addr = rtp->them_midcom_nat.sin_addr;
|
||||
}
|
||||
#endif
|
||||
|
||||
void ast_rtp_stop(struct ast_rtp *rtp)
|
||||
{
|
||||
memset(&rtp->them.sin_addr, 0, sizeof(rtp->them.sin_addr));
|
||||
@@ -1515,7 +1533,6 @@ enum ast_bridge_result ast_rtp_bridge(struct ast_channel *c0, struct ast_channel
|
||||
struct sockaddr_in t0, t1;
|
||||
struct sockaddr_in vt0, vt1;
|
||||
char iabuf[INET_ADDRSTRLEN];
|
||||
|
||||
void *pvt0, *pvt1;
|
||||
int codec0,codec1, oldcodec0, oldcodec1;
|
||||
|
||||
@@ -1670,8 +1687,12 @@ enum ast_bridge_result ast_rtp_bridge(struct ast_channel *c0, struct ast_channel
|
||||
if (option_debug) {
|
||||
ast_log(LOG_DEBUG, "Oooh, '%s' changed end address to %s:%d (format %d)\n",
|
||||
c0->name, ast_inet_ntoa(iabuf, sizeof(iabuf), t0.sin_addr), ntohs(t0.sin_port), codec0);
|
||||
ast_log(LOG_DEBUG, "Oooh, '%s' changed end vaddress to %s:%d (format %d)\n",
|
||||
c0->name, ast_inet_ntoa(iabuf, sizeof(iabuf), vt0.sin_addr), ntohs(vt0.sin_port), codec0);
|
||||
ast_log(LOG_DEBUG, "Oooh, '%s' was %s:%d/(format %d)\n",
|
||||
c0->name, ast_inet_ntoa(iabuf, sizeof(iabuf), ac0.sin_addr), ntohs(ac0.sin_port), oldcodec0);
|
||||
ast_log(LOG_DEBUG, "Oooh, '%s' wasv %s:%d/(format %d)\n",
|
||||
c0->name, ast_inet_ntoa(iabuf, sizeof(iabuf), vac0.sin_addr), ntohs(vac0.sin_port), oldcodec0);
|
||||
}
|
||||
if (pr1->set_rtp_peer(c1, t0.sin_addr.s_addr ? p0 : NULL, vt0.sin_addr.s_addr ? vp0 : NULL, codec0, ast_test_flag(p0, FLAG_NAT_ACTIVE)))
|
||||
ast_log(LOG_WARNING, "Channel '%s' failed to update to '%s'\n", c1->name, c0->name);
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
sounds/macroform-cold_day.mp3
Normal file
BIN
sounds/macroform-cold_day.mp3
Normal file
Binary file not shown.
BIN
sounds/macroform-robot_dity.mp3
Normal file
BIN
sounds/macroform-robot_dity.mp3
Normal file
Binary file not shown.
BIN
sounds/macroform-the_simplicity.mp3
Normal file
BIN
sounds/macroform-the_simplicity.mp3
Normal file
Binary file not shown.
BIN
sounds/manolo_camp-morning_coffee.mp3
Normal file
BIN
sounds/manolo_camp-morning_coffee.mp3
Normal file
Binary file not shown.
BIN
sounds/reno_project-system.mp3
Normal file
BIN
sounds/reno_project-system.mp3
Normal file
Binary file not shown.
@@ -331,6 +331,7 @@ static int show_translation(int fd, int argc, char *argv[])
|
||||
if (argc > 4)
|
||||
return RESULT_SHOWUSAGE;
|
||||
|
||||
ast_mutex_lock(&list_lock);
|
||||
if (argv[2] && !strcasecmp(argv[2],"recalc")) {
|
||||
z = argv[3] ? atoi(argv[3]) : 1;
|
||||
|
||||
@@ -349,7 +350,6 @@ static int show_translation(int fd, int argc, char *argv[])
|
||||
|
||||
ast_cli(fd, " Translation times between formats (in milliseconds)\n");
|
||||
ast_cli(fd, " Source Format (Rows) Destination Format(Columns)\n\n");
|
||||
ast_mutex_lock(&list_lock);
|
||||
for (x = -1; x < SHOW_TRANS; x++) {
|
||||
/* next 2 lines run faster than using strcpy() */
|
||||
line[0] = ' ';
|
||||
|
Reference in New Issue
Block a user