Fax gateway functionality (i.e. translating between a T.30 terminal and a T.38
terminal). Can be enabled on a channel by setting FAXOPT(gateway)=yes in the
dialplan.
Big thanks to irroot for porting this code to use the framehooks api.
chan_sip: cleanup from the introduction of ast_str
Remove the length field from sip_req and sip_pkt in chan_sip since they are
redundant (ast_str holds its own length) and refactor the necessary functions.
Response to QueueRule manager command does not contain ActionID if it was specified.
* Add ActionID support as documented for the QueueRule AMI action.
* Remove documentation for ActionID with the Queues AMI action. The
output does not follow normal AMI response output and there is no place to
put an ActionID header.
Gregory Nietsky [Wed, 29 Jun 2011 06:39:26 +0000 (06:39 +0000)]
Commit "distrotech" app_queue changes to Trunk
* Added general option negative_penalty_invalid default off. when set
members are seen as invalid/logged out when there penalty is negative.
for realtime members when set remove from queue will set penalty to -1.
* Added queue option autopausedelay when autopause is enabled it will be
delayed for this number of seconds since last successful call if there
was no prior call the agent will be autopaused immediately.
* Added member option ignorebusy this when set and ringinuse is not
will allow per member control of multiple calls as ringinuse does for
the Queue.
- Mark QUEUE_MEMBER_PENALTY Deprecated it never worked for realtime members
- QUEUE_MEMBER is now R/W supporting setting paused, ignorebusy and penalty.
David Vossel [Tue, 28 Jun 2011 15:34:59 +0000 (15:34 +0000)]
Fixes issue with video and text not being reinvited correctly with directmedia
If a SDP does not modify the session, we ignore it. However, we were defaulting
no text and video support to true before checking to see if the sdp modified
anything or not. This would result in process_sdp ignoring an sdp but removing
video and text from the call during direct media reinvites.
When subscribing MWI to an unsolicited mailbox the first notification is incorrect.
A remote peer subscribed to MWI with the unsolicited option and a local
phone subscribed to the remote mailbox. The notify message-summary events
are sent correctly except for the first one when subscribing, which will
always be 0. This means the phone MWI indicator will be wrong until the
mailbox read/unread count changes and the event is fired.
Looks like this is a regression from ASTERISK-16149.
* Fix the logic to check the cache and if allowed then fallback to
manually counting mailbox messages.
Syntax errors in dialplan do not display the file name.
When issuing the CLI command "dialplan reload" syntax errors and warnings
are displayed on the console. The offending line number is displayed on
the console, but the file name is not displayed. Errors caught in
main/config.c do display the file name.
(closes issue ASTERISK-17985)
Reported by: ulogic
Patches:
pbx_config.patch uploaded by ulogic (License #5685) modified format
Tested by: rmudgett
DTMF wasn't being logged on connected consoles when enabled in logger.conf
Previously in order for DTMF to be logged in a connected console session, the user would
have to do logger set channel DTMF on. This corrects that so that it is on by default.
This issue was caused by an off by one error incurred by a logger level count of 6 in
logger.h where it should have been 7.
(closes issue: ASTERISK-17974)
Reported by: Luke H
........
Stop sending IPv6 link-local scope-ids in SIP messages
The idea behind the patch listed below was used, but in a more targeted manner.
There are now address stringification functions for addresses that are meant to
be sent to a remote party. Link-local scope-ids only make sense on the machine
from which they originate and so are stripped in the new functions.
There is also a host sanitization function added to chan_sip which is used
for when peer and dialog tohost fields or sip_registry hostnames are used to
craft a SIP message.
Also added are some basic unit tests for netsock2 address parsing.
Timout or error on INFO or MESSAGE transaction causes call to be lost.
When exchanging INFO messages within a call, 4xx error causes the call to
be disconnected although RFC 2976 explicitly states that such transactions
do not modify the state of the dialog.
When exchanging MESSAGE messages within a call, 4xx error causes the call
to be disconnected. To provide least surprise, we should not disconnect
the call since a MESSAGE is like INFO in this case. (Implied by RFC 3428
Section 2)
During this function we can not hold the "chan" lock while
doing the masquerade, the explicit goto on the tmp chan, or
the channel alloc. Instead we need to get the channel lock,
store off information about the channel that we need, and
then let the channel lock go for the remainder of the function.
Kinsey Moore [Tue, 21 Jun 2011 16:06:46 +0000 (16:06 +0000)]
ConfBridge does not handle hangup properly
When playing back a prompt to a channel, confbridge neglects to check for
hangup events causing lockup condititions for hangups that occur before
actually joining the conference. This change ensures that the user is removed
from the conference in the event of a premature hangup.
Lock the channel before calling the setoption callback
The channel needs to be locked before calling these callback functions. Also,
sip_setoption needs to lock the pvt and a check p->rtp is non-null before using
it.
DYNAMIC_FEATURES were broken by a recent DTMF change. This patch makes
sure that dynamic features are also checked when deciding whether or not
to pass DTMF through or store it for interpreting.
Adds locking to find_table in res_configure_pgsql to prevent a crash.
Bryonclark described the problem as occuring during this function because of multiple
simultaneous database operations causing corruption against a pgsqlConn object.
When leaving a voicemail, the MWI message is never sent. The same thing
happens when checking a voicemail and marking it as read.
If you restart Asterisk, everything comes up at that state correctly, but
changes to the messages in voicemail causes the light to not be set
appropriately. Very easy to reproduce.
* Made ast_event_check_subscriber() return TRUE if there are ANY
subscribers to an event type when there are no restricting ie values
passed. This allows an event being queued to be queued.
Resolve a segfault/bus error when we try to map memory that falls on a page
boundary.
The fix for ASTERISK-15359 was incorrect in that it added 1 to the length of the
mmap'd region. The problem with this is that reading/writing to that extra byte
outside of the bounds of the underlying fd causes a bus error.
The real issue is that we are working with both a FILE * and the raw fd
underneath it and not synchronizing between them. The code that was removed in
ASTERISK-15359 was correct, but we weren't flushing the FILE * before mapping
the fd.
Looking at the manager code in 1.4 reveals that the FILE * in 'struct
mansession' is never used except to create a temporary file that we immediately
fdopen. This means we just need to write a 0 byte to the fd and everything will
just work. The other branches require a call to fflush() which, while not a
guaranteed fix, should reduce the likelihood of a crash.
This all makes sense in my head.
(closes issue ASTERISK-16460)
Reported by: Ravelomanantsoa Hoby (hoby)
Patches:
issue17747_1.4_svn_markII.patch uploaded by Sean Bright (license #5060)
........
................
................
Kinsey Moore [Wed, 15 Jun 2011 13:45:41 +0000 (13:45 +0000)]
CONFBRIDGE_INFO function to get conference data
Added the CONFBRIDGE_INFO dialplan function to get information about a
conference bridge including locked status and number of parties, admins, and
marked users.
Changes contact use in build_peer to use the FORCE_RPORT flag instead of RPORT_PRESENT
It turned out that this was causing NAT=Yes to always use rport when present which was
against 1.6.2 behavior and the check itself was redundant since the only way this
segment of code could be reached was if RPORT_PRESENT was already evaluated as true
earlier.
Kinsey Moore [Mon, 13 Jun 2011 20:44:59 +0000 (20:44 +0000)]
Config inheritance doesn't work with ConfBridge() menu definitions
Current behavior in ConfBridge menu definitions is that first definition takes
precedence, even in templated situations. This change allows inheritance and
overriding to work as expected so that the last definition takes precedence.
Kinsey Moore [Mon, 13 Jun 2011 14:38:57 +0000 (14:38 +0000)]
MOH for only user not working with ConfBridge
This adds the playing_moh flag to the conference_bridge_user struct that
signifies when MOH should be playing so code doesn't have to guess whether
MOH is playing.
This change also adds the necessary checking to ensure that MOH continues
playing for a single user in a conference after the join sound is played when
configured to do so.
Kinsey Moore [Mon, 13 Jun 2011 14:30:51 +0000 (14:30 +0000)]
ConfBridge: Use of bridge or user profiles that don't exist
Bridge and user profiles are not checked for existence before use. The lack
of a fully formed bridge profile can cause a segfault when sounds are accessed.
This change ensures that bridge and user profiles exist prior to usage
attempts.
Explicity check the last entry in the DB and make sure that we don't iterate
past it. Since there can be no duplicates, this just makes sure that we stop
after matching the last key.
This patch also refactors the code to get away from some code duplication. A
previous patch added many astdb tests and this patch passed them.
Deadlock is possible in ast_do_pickup() when holding the target channel
lock and trying to get the chan channel lock. Also, holding the target
lock when calling ast_channel_masquerade() is not a good idea because that
routine does deadlock avoidance.
* Removed the need to hold the target lock after marking the target with a
datastore and getting the connected line data off of the target channel.
* Moved can_pickup() to ast_can_pickup() in features.c. Now all the call
pickup methods use the same basic call pickup availability check.
Adds ast_escape_encoded utility to properly handle escaping of quoted field before uri.
This commit backports a feature in trunk affecting initreqprep so that display name won't
be encoded improperly. Also includes unit tests for the ast_escape_quoted function.
This patch gives 1.8 a much improved outlook in countries which don't use standard
ASCII characters.
Damien Wedhorn [Thu, 9 Jun 2011 11:05:07 +0000 (11:05 +0000)]
Add autoanswer to skinny.
Autoanswer added to skinny based on incoming chan var SKINNY_AUTOANSWER.
Initial value must be the time to autoanswer in ms, then optionally :BEEP
to play a tone when answered and :MUTE to mute the mic when answering.
eg 3000:MUTE:BEEP will ring for 3 secs, then answer, mute the mic, and
play a beep. just 3000 would answer afer 3 secs of ringing with no
beep and full two way audio.
Ring all queue with more than 255 agents will cause crash.
1. Create a ring-all queue with 500 permanent agents.
2. Call it.
3. Asterisk will crash.
The watchers array in app_queue.c has a hard limit of 255. Bounds
checking is not done on this array. No sane person should put 255 people
in a ring-all queue, but we should not crash anyway.
Damien Wedhorn [Wed, 8 Jun 2011 11:38:56 +0000 (11:38 +0000)]
Remove skinny do_monitor and use ast_sched_start instead
The do_monitor seemed to be there for task scheduling and network monitoring. However, the network monitoring has a dedicated thread so the ast_io_wait was basically just a usleep as it didn't actually seem to be monitoring anything.
Make handle_request_publish do dialog expiration and destruction.
This patch fixes handle_request_publish so that it does dialog expiration and destruction.
Without this patch the incoming PUBLISH requests will get stuck in the dialog list.
Restarting asterisk is the only way to remove them.
Personal observation on one system the server hung up while looping through the channels
rendering asterisk unusable and all sip phones unregisterd when they try reregister
more requests are added.
Asterisk crash when unloading cdr_radius/cel_radius.
The rc_openlog() API call is passed a string that is used by openlog() to
format log messages. The openlog() does not copy the string it just keeps
a pointer to it. When the module is unloaded, the string is gone from
memory. Depending upon module load order and if the other module then has
an error, a crash happens.
* Pass rc_openlog() a strdup'd string with the understanding that there
will be a small memory leak if the cdr_radius/cel_radius modules are
unloaded.
* Call rc_destroy() to free the rc handle memory when the module is
unloaded.
Must commit the subscription fixes together with the integration
subscription tests. The subscription fixes cause an erroneously passing
test to fail. The new subscription tests detect errors without the
subscription fixes.
* Added missing event_names[] table entry.
* Reworked ast_event_check_subscriber()/match_sub_ie_val_to_event() to
correctly detect if a subscriber exists for the proposed event.
* Made match_ie_val() and match_sub_ie_val_to_event() check the buffer
length for RAW payload types.
* Fixed error handling memory leak in ast_event_sub_activate(),
ast_event_unsubscribe(), and ast_event_queue().
* Made ast_event_new() and ast_event_check_subscriber() better protect
themselves from an invalid payload type.
* Added container lock protection between removing old cache events and
adding the new cached event in
ast_event_queue_and_cache()/event_update_cache().
Russell Bryant [Wed, 1 Jun 2011 21:31:40 +0000 (21:31 +0000)]
Support routing text messages outside of a call.
Asterisk now has protocol independent support for processing text messages
outside of a call. Messages are routed through the Asterisk dialplan.
SIP MESSAGE and XMPP are currently supported. There are options in sip.conf
and jabber.conf that enable these features.
There is a new application, MessageSend(). There are two new functions,
MESSAGE() and MESSAGE_DATA(). Documentation will be available on
the project wiki, wiki.asterisk.org.
Thanks to Terry Wilson for the assistance with development and to David Vossel
for helping with some additional testing.
Alexandr Anikin [Wed, 1 Jun 2011 10:45:12 +0000 (10:45 +0000)]
Merged revisions 321528 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r321528 | may | 2011-06-01 14:40:19 +0400 (Wed, 01 Jun 2011) | 14 lines
Fix double alerting, add forced alerting before answer
Fix double alerting (it wasn't fixed here by issue #18542)
Add forced alerting before connect (if it wasn't before)
Try to send all packets from outgoing queue rather than one only
Call goes into clearing state when disconnect command is received