summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-10-11chan_sip: Support nat=auto_comedia or nat=force_rport,auto_comedia.Alexander Traud
In the SIP channel driver chan_sip, auto_comedia was expected to be used in tandem with auto_force_rport. Or stated differently: Only when auto_force_rport was chosen (the default), auto_comedia worked. This change allows auto_comedia to be set independently of the state of (auto_)force_rport. For example, nat=force_rport,auto_comedia is useful for IPv4/IPv6 Dual Stack deployments when IPv6 clients are behind a Firewall. ASTERISK-26457 #close Change-Id: Ib29d66c6dbb61648e371e01fc36c6978ddae5bc2
2016-10-11vector: After remove element recheck indexBadalyan Vyacheslav
Small fix. It is necessary to double-check the index that we just removed because there is a new element. ASTERISK-26453 #close Change-Id: Ib947fa94dc91dcd9341f357f1084782c64434eb7
2016-10-10Merge "cel_odbc: Fix memory leak on module unload"Joshua Colp
2016-10-10Merge "pjproject_bundled: Add MALLOC_DEBUG capability"Joshua Colp
2016-10-10res_rtp_asterisk: Fix infinite DTMF issue when switching to P2P bridgeTorrey Searle
If a bridge switched to P2P when a DTMF was in progress it was possible for the DTMF to continue being sent indefinitely. Change-Id: I7e2a3efe0d59d4b214ed50cd0b5d0317e2d92e29
2016-10-10logger: Prevent output of verbose messages initiated from rasterisk.Corey Farrell
Remote asterisk consoles should only display verbose log messages created by the daemon. The first patch for ASTERISK-26410 caused a couple verbose messages to be printed when the rasterisk process ended. ASTERISK-26410 Change-Id: Ie2a1bb3753ad2724c0349ec1a336f52f7117b52a
2016-10-10audiohooks: Remove redundant codec translations when using audiohooksMichael Walton
The main frame read and write handlers in main/channel.c don't use the optimum placement in the processing flow for calling audiohooks callbacks, as far as codec translation is concerned. This change places the audiohooks callback code: * After the channel read translation if the frame is not linear before the translation, thereby increasing the chance that the frame is linear as required by audiohooks * Before the channel write translation if the frame is linear at this point This prevents the audiohooks code from instantiating additional translation paths to/from linear where a linear frame format is already available, saving valuable CPU cycles ASTERISK-26419 Change-Id: I6edd5771f0740e758e7eb42558b953f046c01f8f
2016-10-10res_pjsip_config_wizard: Memory leak in module_unloadBadalyan Vyacheslav
Fixed a memory leak. It removes only the first element. Added a useful feature in vector.h to remove all items under the CMP through a callback function / macro. ASTERISK-26453 #close Change-Id: I84508353463456d2495678f125738e20052da950
2016-10-10res_calendar: Add support for fetching calendars when reloadingLudovic Gasc (GMLudo)
We use a lot res_calendar, we are very happy with that, especially because you use libical, the almost alone opensource library that supports really ical format with all types of recurrency. Nevertheless, some features are missed for our business use cases. This first patch adds a new option in calendar.conf: fetch_again_at_reload. Be my guest for a better name. If it's true, when you'll launch "module reload res_calendar.so", Asterisk will download again the calendar. The business use case is that we have a WebUI with a scheduler planner, we know when the calendars are modified. For now, we need to define 1 minute of timeout to have a chance that our user doesn't wait too long between the modification and the real test. But it generates a lot of useless HTTP traffic. ASTERISK-26422 #close Change-Id: I384b02ebfa42b142bbbd5b7221458c7f4dee7077
2016-10-10Merge "Revert "Packet-Loss Concealment (PLC) for supporting codecs.""Joshua Colp
2016-10-09cel_odbc: Fix memory leak on module unloadBadalyan Vyacheslav
Change-Id: Ic7a1236eba2408090fdabb5f717b5fa455ead715
2016-10-09bundled_pjproject: Add tests for programs used by the Makefile, et al.George Joseph
Added tests for bzip2, tar, patch, sed and nm to configure.ac. Set DOWNLOAD_TO_STDOUT to a working command line regardless of whether the download program is wget, curl or fetch. Added a 'configure.m4' file to the third-party directory which takes care of calling any third-party project setup. Had to move some pjproject_bundled stuff up in configure.ac so it was called before the third-party configure macro. The pjproject tarball is now downloaded to the externals_cache_dir if it was specified on the ./configure command line Removed regeneration of the pjproject aconfigure file. It was only needed for an old patch that no longer applies. Converted the tests for symbols to explicit tests since we know that they're now available in the bundled version. Saves a little time during configure. ASTERISK-26416 #close Reported-by: Corey Farrell Change-Id: Id1d94251c0155f8dd41b7de7067f35cfbaafbb9b (cherry picked from commit e6b0053d7561032b7adbf6f3afaecf30f5046605) (cherry picked from commit a0d02f38322c2c4d7743504003fd376d32a133db)
2016-10-09Revert "Packet-Loss Concealment (PLC) for supporting codecs."Joshua Colp
This change introduced some fax test failures that have not yet been addressed. So this is not forgotten I'm submitting a change which reverts it. This reverts: d56fc3b36b7bb59b5506129b9895b6c3341350c9. ASTERISK-25629 Change-Id: Ibc2f23c38643f5a2c89cf8915ae2d805b81bc3d5
2016-10-09pjproject_bundled: Add MALLOC_DEBUG capabilityGeorge Joseph
pjproject_bundled will now use the asterisk memory debugging APIs if MALLOC_DEBUG is turned on in menuselect. Because this required stubs for the executable programs and the python bindings, some Makefile reorganization was needed to properly handle the dependencies. As a result, the makefile now individually makes each of the pjproject libraries separately instead of making them all in 1 shot. The only visible change is that there are separate status lines printed for each library instead oif 1 for all libs. Also, the making of the pjproject dependency files was eliminated. They're not needed for building unless you're actively modifying pjproject source files and it makes the build process faster. Finally, any issues with parallel builds should be resolved again making the build faster. Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0
2016-10-07alembic: Allow cdr, config and voicemail to exist in the same schemaGeorge Joseph
cdr, config and voicemail are all separate alembic trees. Because alembic's default is to use a table named 'alembic_version' to store the current tree revision, the 3 trees can't exist in the same schema without stepping on each other. Now each tree uses 'alembic_version_<tree_name>' as the version table. Each tree's env.py script now first checks for 'alembic_version'. If it finds it AND its revision is in the tree's history, the script renames it to 'alembic_version_<tree_name>'. Regardless, the script then continues with the migration using 'alembic_version_<tree_name>' and creates that table if it's not found. The result is that if an existing 'alembic_version' table was found but it didn't belong to this tree, it's left alone and 'alembic_version_<tree_name>' is used or created. WARNING: If multiple trees are using the same schema, they MUST NOT CRU or D any objects with names that might exist in the other trees. An example would be 'yesno_values' type. If two trees perform operations on it, one tree could pull it out from under the other. Thankfully we currently don't share any names among cdr, config and voicemail. NOTE: Since the env.py scripts in each tree were identical, a common env.py has been placed in the ast-db-manage directory and a symlink to it has been placed in each tree directory. ASTERISK-24311 #close Reported-by: Dafi Ni Change-Id: I4d593f000350deb5d21a14fa1e9bc3896844d898
2016-10-07Merge "chan_sip: Honor support of Symmetric Response (rport) for SIP requests."Joshua Colp
2016-10-05chan_sip: Honor support of Symmetric Response (rport) for SIP requests.Alexander Traud
In the SIP channel driver chan_sip, the default is "auto_force_rport". When no NAT was detected, for example in case of IPv6, Asterisk uses the IP address from the headers within the SIP-REGISTER for subsequent SIP signaling. When the remote party specifies support for Symmetric Response (RFC 3581) via the parameter "rport", Asterisk should not extract the port from the SIP headers but reuse the port of the transport. This did not happen because of a typo. ASTERISK-26438 #close Change-Id: If6e7891848aaf96666dee5305695f7c6667cd5a6
2016-10-04Merge "app_queue: Update dynamic members ringinuse on reload."Joshua Colp
2016-10-03Binaural synthesis (confbridge): interleaved two-channel audio.frahaase
Asterisk only supports mono audio at the moment. This patch adds interleaved two-channel audio to Asterisk's channels. ASTERISK-26292 Change-Id: I7a547cea0fd3c6d1e502709d9e7e39605035757a
2016-09-30astobj2: Add backtrace to log_bad_ao2.Corey Farrell
* Compile __ast_assert_failed unconditionally. * Use __ast_assert_failed to log messages from log_bad_ao2 * Remove calls to ast_assert(0) that happen after log_bad_ao2 was run. Change-Id: I48f1af44b2718ad74a421ff75cb6397b924a9751
2016-09-30Add text of cdr directory into README.md for ast-db-manageRodrigo Ramírez Norambuena
Change-Id: I68321c4bea50730c39fdb486e5f23aeadd1ad636
2016-09-30app_queue: Update dynamic members ringinuse on reload.Etienne Lessard
Previously, when reloading the members of a queue, the members added statically (i.e. defined in queues.conf) would see their "ringinuse" value updated but not the members added dynamically. This change makes dynamic members ringuse value to be updated on reload. Note that it's impossible to add a dynamic member with a specific ringinuse value. For both static and dynamic members, the ringinuse value can always be changed later on with command like "queue set ringinuse" or with the AMI action "QueueMemberRingInUse". So it's possible this commit could break a user workflow if he was changing the ringinuse value of dynamic members via such commands and was also relying on the fact that a queue reload would not update the dynamic members ringinuse value. ASTERISK-26330 Change-Id: I3745cc9a06ba7e02c399636f1ee9e58c04081f3f
2016-09-30Merge "core: Remove ABI effects of LOW_MEMORY."Joshua Colp
2016-09-29Merge "Remove "format_ogg_opus: New format""Joshua Colp
2016-09-29Merge "download_externals: Fix issue with re-install"Joshua Colp
2016-09-29Remove "format_ogg_opus: New format"Kevin Harwell
This reverts commit 40aa28131bc30b4516da2b20eb1a1e043920169c. ASTERISK-26426 #close Change-Id: I81e55c3c512f1dd6f49896f0c6b97a07d74fd8f5
2016-09-29core: Remove ABI effects of LOW_MEMORY.Corey Farrell
This allows asterisk to compiled with LOW_MEMORY to load modules built without LOW_MEMORY. ASTERISK-26398 #close Change-Id: I24b78ac9493ab933b11087a8b6794f3c96d4872d
2016-09-27download_externals: Fix issue with re-installGeorge Joseph
Needed to ignore an xmlstarlet return code for optional element. Change-Id: I6a96f709b4b38c9a3f3dda4e8b07903787e16873 Reported-by: Dan Jenkins
2016-09-27logger: Output early verbose messages to console.Corey Farrell
Verbose messages should be printed to the console if the sublevel is less than option_verbose. This fix ensures the welcome message with copyright and license are printed at daemon and interactive rasterisk startup. ASTERISK-26410 #close Change-Id: Ia44235e30ec328aba92ea2c8a837b094e65c9a03
2016-09-27Merge "chan_sip: Resolve externhost not to IPv6; instead go for IPv4."zuul
2016-09-27Merge "codec_opus: Add download ability to menuselect"George Joseph
2016-09-27Merge "codec_opus: Replace res_format_attr_opus with the one from codec_opus"George Joseph
2016-09-27Merge "format_ogg_opus: New format"George Joseph
2016-09-27codec_opus: Add download ability to menuselectGeorge Joseph
Updated codecs/codecs.xml to add codec_opus to the external download list. ASTERISK-26409 Change-Id: Ia07b36539f30e852125fb2b94147dc9774df31a4 (cherry picked from commit 2cdab0e36eec4997ca3bd85aa09efc477038e31c) (cherry picked from commit e9684f3acd0e8def0df582c1505dd39dd3fd1610)
2016-09-27codec_opus: Replace res_format_attr_opus with the one from codec_opusGeorge Joseph
Preparation ASTERISK-26409 Change-Id: I9f20e7cce00c32464d9a180e81283d49d199d0a3 (cherry picked from commit 59f7662a93bf9c07204fb50e1020a0f5bfbbd5c9)
2016-09-27format_ogg_opus: New formatGeorge Joseph
Add Ogg/Opus playback support. This uses libopusfile in order to be able to read .opus files and play them back. Writing/recording support is not present at this time. ASTERISK-26409 Change-Id: I8815d23345108d8ca7c0bd640f6a1ce6b4f56955 (cherry picked from commit daee8bbd5209b4158bc1785eede845a26e6cbeaa)
2016-09-25build_tools: Add ability to download variants to download_externalsGeorge Joseph
Some external packages have multiple variants that apply to different builds of asterisk. The DPMA for instance has a "bundled" variant that needs to be downloaded if asterisk was configured with --with-pjproject-bundled. There are 2 ways to specify variants: If you need the user to make the decision about which variant to download, simply create multiple menuselect "member" entries like so... <member name="res_digium_phone" displayname="..snipped.."> <support_level>external</support_level> <depend>xmlstarlet</depend> <depend>bash</depend> <defaultenabled>no</defaultenabled> </member> <member name="res_digium_phone-bundled" displayname="..snipped.."> <support_level>external</support_level> <depend>xmlstarlet</depend> <depend>bash</depend> <defaultenabled>no</defaultenabled> </member> Note that the second entry has "-<variant>" appended to the name. You can then use the existing menuselect facilities to restrict which members to enable or disable. Youy probably don't want the user to enable multiple at the same time. If you want to hide the details of the variants, the better way to do it is to create 1 member with "variant" elements. <member name="res_digium_phone" displayname="..snipped.."> <support_level>external</support_level> <depend>xmlstarlet</depend> <depend>bash</depend> <defaultenabled>no</defaultenabled> <member_data> <downloader> <variants> <variant tag="bundled" condition='[[ "$PJPROJECT_BUNDLED" = "yes" ]]'/> </variants> </downloader> </member_data> </member> The condition must be a bash expression suitable for use with an "if" statement. Any environment variable can be used plus those available in makeopts. In this case, if asterisk was configured with --with-pjproject-bundled the bundled variant will be automatically downloaded. Otherwise the normal version will be downloaded. Change-Id: I4de23e06d4492b0a65e105c8369966547d0faa3e
2016-09-23Merge "chan_sip: Address runaway when realtime peers subscribe to mailboxes"zuul
2016-09-23Merge "channels/chan_pjsip: fix HANGUPCAUSE function bug."zuul
2016-09-23chan_sip: Resolve externhost not to IPv6; instead go for IPv4.Alexander Traud
For the channel driver chan_sip, you specify externhost=example.com in sip.conf when your Asterisk is behind a NAT and your IP address is assigned dynamically. Or stated differently: You do not have a static IP address to use "externaddr" directly. This NAT support is quite handy but just about IPv4. Previously, Asterisk resolved "externhost" to any IP version. When the first DNS answer resolved to an IPv6, Asterisk sent an IPv6 in SIP/SDP for origin (o=) and connection (c=). This happened in outgoing SIP-REGISTER and while answering SIP-INVITE. If the remote peer is IPv4-only, it might not handle o=/c= with an IPv6. This change makes sure, no IPv6 is resolved anymore for "externhost". ASTERISK-18232 #close Reported by: Jacek Kowalski Tested by: Alexander Traud patches: changes.patch submitted by Alessandro Crespi Change-Id: If68eedbeff65bd1c1d8a9ed921c02ba464b32dac
2016-09-23chan_sip: Address runaway when realtime peers subscribe to mailboxesGeorge Joseph
Users upgrading from asterisk 13.5 to a later version and who use realtime with peers that have mailboxes were experiencing runaway situations that manifested as a continuous stream of taskprocessor congestion errors, memory leaks and an unresponsive chan_sip. A related issue was that setting rtcachefriends=no NEVER worked in asterisk 13 (since the move to stasis). In 13.5 and earlier, when a peer tried to register, all of the stasis threads would block and chan_sip would again become unresponsive. After 13.5, the runaway would happen. There were a number of causes... * mwi_event_cb was (indirectly) calling build_peer even though calls to mwi_event_cb are often caused by build_peer. * In an effort to prevent chan_sip from being unloaded while messages were still in flight, destroy_mailboxes was calling stasis_unsubscribe_and_join but in some cases waited forever for the final message. * add_peer_mailboxes wasn't properly marking the existing mailboxes on a peer as "keep" so build_peer would always delete them all. * add_peer_mwi_subs was unsubscribing existing mailbox subscriptions then just creating them again. All of this was causing a flood of subscribes and unsubscribes on multiple threads all for the same peer and mailbox. Fixes... * add_peer_mailboxes now marks mailboxes correctly and build_peer only deletes the ones that really are no longer needed by the peer. * add_peer_mwi_subs now only adds subscriptions marked as "new" instead of unsubscribing and resubscribing everything. It also adds the peer object's address to the mailbox instead of its name to the subscription userdata so mwi_event_cb doesn't have to call build_peer. With these changes, with rtcachefriends=yes (the most common setting), there are no leaks, locks, loops or crashes at shutdown. rtcachefriends=no still causes leaks but at least it doesn't lock, loop or crash. Since making rtcachefriends=no work wasnt in scope for this issue, further work will have to be deferred to a separate patch. Side fixes... * The ast_lock_track structure had a member named "thread" which gdb doesn't like since it conflicts with it's "thread" command. That member was renamed to "thread_id". ASTERISK-25468 #close Change-Id: I07519ef7f092629e1e844f855abd279d6475cdd0
2016-09-22Merge "core: Ensure presencestate subtype and message are NULL."Joshua Colp
2016-09-22Merge "res_odbc: Make pooling option deprecation notice more useful."Joshua Colp
2016-09-22Merge "cdr_mysql: fix UTC support"Joshua Colp
2016-09-22channels/chan_pjsip: fix HANGUPCAUSE function bug.Aaron An
HANGUPCAUSE not return 'SIP 200 Ok' when dialed channel answered. This patch change the call order of ast_queue_control_data and ast_queue_control in chan_pjsip_incoming_response. ASTERISK-26396 #close Reported by: AaronAn Tested by: AaronAn Change-Id: Ide2d31723d8d425961e985de7de625694580be61
2016-09-21Merge "logger: Simplify ast_callid handling code."zuul
2016-09-21Merge "logger: Always enable verbose for console channel."Joshua Colp
2016-09-21core: Ensure presencestate subtype and message are NULL.Joshua Colp
When retrieving presence state information there is no guarantee that the subtype and message passed in are set to NULL. This change ensures they are. ASTERISK-26397 #close Change-Id: If38cd730e409e9a9b6eb9adef6591d15a9e61f86
2016-09-21Merge "logger: Fix default console settings."zuul
2016-09-21Merge "core: Fix LOW_MEMORY missing symbol ast_pbx_uuid_get."zuul