summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-09-08Merge "res_pjsip: Allow global headers to be overridden." into 13zuul
2016-09-07Merge "ConfBridge: Make some announcements asynchronous." into 13zuul
2016-09-07Merge "followme: initialize all config items on reload" into 13zuul
2016-09-07res_pjsip_messaging.c: Misc cleanups and fixes.Richard Mudgett
* Eliminated RAII_VAR in get_outbound_endpoint(). * Simplify update_to() coding. However, this function can only be a NoOp because the To string can only be a URI and not a name-address formatted string. * Simplify update_from() coding. Also fixed a code path modifying the from string when the caller could still want to use the original string. * Fixed msg_data_create() incompletely removing the "pjsip:" to then add back the "sip:" string if needed. The code didn't handle the "pjsip:sip:" case because it left the colon after pjsip in the string. Change-Id: I68a09a665f6d4daa9eaa59069045ab69122e28db
2016-09-07res_pjsip: Allow global headers to be overridden.Joshua Colp
Currently when you add global headers from the dialplan both the header in the dialplan and the globally configured header are added to the resulting SIP INVITE. This change makes it so the headers in the dialplan take precedence and are the only ones added. Change-Id: I36f864298f38db3632ad503edc11267cb8ffb3ad
2016-09-07Merge "apps/app_dial: Fix crash on non-connect call paths for ↵zuul
Privacy/Screening option" into 13
2016-09-07Merge "res_pjsip_session: segfault on already disconnected session" into 13zuul
2016-09-07Merge "apps/app_dial: Set the DIALSTATUS to NOANSWER on privacy option 5" ↵zuul
into 13
2016-09-07Merge "build: Add download capability for external packages" into 13Joshua Colp
2016-09-07followme: initialize all config items on reloadTzafrir Cohen
Some configuration directives were not initialized on reload, and hence were not reset to default if they were removed from followme.conf. ASTERISK-26288 #close Change-Id: Ief829e16374ad1e0ecfd63e6ee4923b5a1d1c150
2016-09-06Merge "chan_sip: Don't refuse calls with "optional crypto"; fall back to ↵zuul
RTP." into 13
2016-09-06Merge "res_pjsip_registrar.c: Reduce stack usage in find_aor_name()." into 13zuul
2016-09-06Merge "pjsip_configuration.c: Ignore repeated identify by methods." into 13zuul
2016-09-06Merge "config_global.c: Comments and a default expression adjustment." into 13zuul
2016-09-06Merge "sip_to_pjsip.py: Map canreinvite as directmedia alias." into 13zuul
2016-09-06Merge "sip_to_pjsip.py: Fix typo converting outboundproxy registration." into 13zuul
2016-09-06Merge "sip_to_pjsip.py: Fix comment typo and tabs." into 13zuul
2016-09-06Merge "Sample configs: Eliminate false multiline comment block starts." into 13zuul
2016-09-06build: Add download capability for external packagesGeorge Joseph
The DPMA and g729a, silk, siren7 and siren14 codecs hosted at http://downloads.digium.com/pub/telephony/ are now listed in the "External" sections of the "Resource Modules" and "Codec Translators" pages in menuselect. Any that are selected will automatically be downloaded and installed when "make install" is run. Their LICENSE and README (if avaialble) files will be installed to ASTVARLIBDIR/documentation/thirdparty/<product_name>. Example use with codecs: The codecs/codecs.xml file is a menuselect style xml file that lists the codecs to be included. Their support levels are 'external', which triggers the download and install, and defaultenabled is no. Also because codec_g729a is actually in a directory named codec_g729 on the download server, the newly added 'member_data' element is used to override the default of the directory name being the package name. You can use the 'directory_name' attribute to keep default base URL (http://downloads.digium.com/pub/telephony/) but use the new directory, or you use the 'remote_url' attribute to specify a full URL to the download directory. In this case, you must still follow the same subdirectory naming conventions as that used for the packages located at 'http://downloads.digium.com/pub/telephony'. A new configure option '--with-externals-cache' was added and like '--with-sounds-cache' it allows the installer to cache tarballs so they're not downloaded every time. To assist with the download and install process, each external package now has a manifest.xml file that, among other things, contains a package version and checksums for each file in the tarball. The manifest is saved to both the cache directory and ASTMODDIR and together with the manifest.xml on the downloads site, tells the install scripts whether a download and/or update is needed. bash and xmlstarlet are required for downloader operation. If they're not installed, the external items in menuselect will be unavailable. Change-Id: Id3dcf1289ffd3cb0bbd7dfab3cafbb87be60323a
2016-09-06Merge "format_cap.c: Fix CLI "core show channeltype Surrogate" crash." into 13zuul
2016-09-06chan_sip: Don't refuse calls with "optional crypto"; fall back to RTP.Walter Doekes
Certain SNOM phones send so-called "optional crypto" in their SDP body. Regular SRTP setup looks like this: m=audio 64620 RTP/SAVP 8 0 9 99 3 18 4 101 a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:... SNOM-style "optional crypto" looks like this: m=audio 61438 RTP/AVP 8 0 9 99 3 18 4 101 a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:... A crypto line is supplied, but the m-line does not have SAVP. When res_srtp.so is *not* loaded, then chan_sip.so treats the optional crypto as regular RTP, but when res_srtp.so *is* loaded, it refuses the incoming call with the following message: WARNING: process_sdp: Failed to receive SDP offer/answer with required SRTP crypto attributes for audio For platforms that want to start providing SRTP this presents a compatibility problem. This changeset lets chan_sip handle the SDP as if no crypto-line was supplied: i.e. accept the call as regular RTP, just like it did before res_srtp was loaded. Now you'll get this informative warning instead: WARNING: Ignoring crypto attribute in SDP because RTP transport is insecure ASTERISK-23989 #close Reported by: Olle Johansson Change-Id: I91a15ae05a0296e398d6b65f53bb11afde1d80e2
2016-09-04Merge "app_mp3: Use correct buffer size and the same sample rate as the ↵zuul
channel" into 13
2016-09-03apps/app_dial: Fix crash on non-connect call paths for Privacy/Screening optionMatt Jordan
In any scenario in which the callee is not connected to the caller, the current code in app_dial will crash due to raising a Dial End Stasis Message after the callee channel has been hung up. This patch corrects the error by simply moving the explicit hangup of the callee (peer) channel until after the dial end message. ASTERISK-25691 #close Change-Id: I816a414014424d0d8c80e2a3cbef13ef8c63798d
2016-09-03apps/app_dial: Set the DIALSTATUS to NOANSWER on privacy option 5Matt Jordan
If the callee selects option '5' using the Dial application's privacy (P) option, the DIALSTATUS is erroneously set to ANSWER. This option reflects the callee sending the caller to VoiceMail one time; the call is definitely *not* ANSWERed in such a scenario. With this patch, the DIALSTATUS is instead set to NOANSWER, which is the same DIALSTATUS that is set when the 'send to VoiceMail every time' option is set. ASTERISK-25691 Change-Id: Iaf0c9f0fa00545e7366443875e2bb7d9a89a1358
2016-09-02res_pjsip_registrar.c: Reduce stack usage in find_aor_name().Richard Mudgett
Change-Id: I8aebad1fdcf303bd115b59a4b57fbbd5b2267f09
2016-09-02pjsip_configuration.c: Ignore repeated identify by methods.Richard Mudgett
Change-Id: Ied0c06043d1dfef8fdc9c9a808cf89b118119838
2016-09-02config_global.c: Comments and a default expression adjustment.Richard Mudgett
Change-Id: Ia6a58f8c73a30da6874b3f94364dce162d6f1ad3
2016-09-02sip_to_pjsip.py: Map canreinvite as directmedia alias.Richard Mudgett
Change-Id: I48b8e150f96a3d2a24d8fc25fbe4f5aff9f4a6b2
2016-09-02sip_to_pjsip.py: Fix typo converting outboundproxy registration.Richard Mudgett
Change-Id: I6f30e5f9fcf8469ba0079fbf884047d54c2c0b15
2016-09-02sip_to_pjsip.py: Fix comment typo and tabs.Richard Mudgett
Change-Id: If35174614545727817d329c60ba4456c028941b5
2016-09-02Sample configs: Eliminate false multiline comment block starts.Richard Mudgett
Change-Id: Ie627def9604ae30abd80754f9e6f09874825aec6
2016-09-02format_cap.c: Fix CLI "core show channeltype Surrogate" crash.Richard Mudgett
* Make ast_format_cap_get_names() NULL tolerant. ASTERISK-26331 #close Reported by: CGI.NET Change-Id: Id67e93936dc8ec2a33a9d33655843d43b59285a3
2016-09-01res_pjsip_session: segfault on already disconnected sessionAlexei Gradinari
On heavy loaded system the TCP/TLS incoming calls could be disconnected by pjproject while these calls are being processed by asterisk which could use the session's memory pools. If the session in the disconnected state then the session memory pools were already freed, so we get segfault. This patch adds a lifetime control on an INVITE session to pjproject. The lifetime of the session is manipulated by calling pjsip_inv_add_ref/pjsip_inv_dec_ref. This patch uses these functions to inform pjproject that the session is in use. This patch adds check if the session state is not disconnected and also checks if the memory pool is not NULL. This patch also places tasks 'session_end' and 'session_end_completion' into session's serializer to avoid race condition. ASTERISK-26291 #close Change-Id: I4d28b1fb3b91f0492a911d110049d670fdc3c8d7
2016-09-01ConfBridge: Make some announcements asynchronous.Mark Michelson
Confbridge announcements tend to block a channel while they are being played. In some circumstances, this is warranted since you want that particular channel not to hear the announcement (Example: "John Doe has entered the conference"). For others it makes less sense. This change first introduces methods for playing sounds asynchronously into the conference. This is very similar to how synchronous sounds are played, except the channel initiating the playback does not wait for the sound to complete before moving on. Asynchronous announcements are used for two circumstances: * Sounds played for a user after they have left the bridge * Sounds that play first to a single user and then the rest of the conference (if the channel and conference use the same language) ASTERISK-26289 #close Reported by Mark Michelson Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a
2016-09-01Merge "res_pjsip: qualify/unqualify added/deleted realtime endpoints" into 13zuul
2016-09-01Merge "sip_to_pjsip: Migrate IPv4/IPv6 (Dual Stack) configurations." into 13zuul
2016-09-01app_mp3: Use correct buffer size and the same sample rate as the channelMichael Kuron
Previously, the buffer used for MP3 streamed from HTTP servers had a size of 1 MB. For 8 kHz mono audio at 16 bit resolution, such a buffer covers about 1 minute. Only when the buffer is full does audio start to play. For MP3 files streamed from a server, that is usually not a big deal as long as the connection to the server is fast enough to supply that much data within a second or two. For MP3 live streams however, it takes 1 minute to download 1 minute of audio, so without this change, app_mp3 wasn't really usable for MP3 live streams. This commit changes the buffer size so that it covers 6 seconds of an MP3 file streamed from a server and 0.5 seconds of an MP3 live stream. The latter is identified by the use of a .m3u file extension. app_mp3 so far only supported 8 kHz audio. Now it always runs at the sample rate of the channel. ASTERISK-26085 #close Change-Id: Id1ee274733cd804a0edecf7450329b72f1235af0
2016-08-30res_pjsip: qualify/unqualify added/deleted realtime endpointsAlexei Gradinari
If the PJSIP endpoint's AOR with the permanent contact was deleted from the realtime storage the res_pjsip module continues trying to qualify this contact. The error 'Unable to find an endpoint to qualify contact' appeares every 'qualify_frequency' seconds. This patch deletes this contact in this case. The PJSIP endpoint's AOR with the permanent contact is never qualified if it is added to realtime storage after asterisk started. This patch adds qualifying for the AOR's permanent contacts on the first handling of this AOR. ASTERISK-26319 #close Change-Id: Ib93dded9121edb113076903d1aa95402f799f8fe
2016-08-29Merge "res_pjsip: Default endpoints to the "offline" status." into 13zuul
2016-08-29Merge "pjproject_bundled: Disable srtp use by pjmedia" into 13zuul
2016-08-29Merge "pbx.c: Prevent infinite recursion in manager_show_dialplan_helper." ↵zuul
into 13
2016-08-29Merge "app_queue: Ensure member is removed from pending when hanging up." ↵zuul
into 13
2016-08-29app_macro: Consider '~~s~~' as a macro start extension.chrisderock
As described in issue ASTERISK-26282 the AEL parser creates macros with extension '~~s~~'. app_macro searches only for extension 's' so the created extension cannot be found. with this patch app_macro searches for both extensions and performs the right extension. ASTERISK-26282 #close Change-Id: I939aa2a694148cc1054dd75ec0c47c47f47c90fb
2016-08-29pbx.c: Prevent infinite recursion in manager_show_dialplan_helper.Etienne Lessard
Previously, if context A was including context B and context B was including context A, i.e. if there was a circular dependency between contexts, then calling manager_show_dialplan_helper could lead to an infinite recursion, resulting in a crash. This commit applies the same solution as the one implemented in the show_dialplan_helper function. The manager_show_dialplan_helper and show_dialplan_helper functions contain lots of code in common, but the former was missing the "infinite recursion avoidance" code. ASTERISK-26226 #close Change-Id: I1aea85133c21787226f4f8442253a93000aa0897
2016-08-27Merge "res_pjsip: Cache global config options." into 13Joshua Colp
2016-08-26Merge "channel: No hung-up on failing security requirements." into 13zuul
2016-08-26pjproject_bundled: Disable srtp use by pjmediaGeorge Joseph
The reason for the disable is that while Asterisk works fine with older libsrtp versions, newer versions of pjproject won't compile with them. Debian 6 for instance, has libsrtp 1.4.4 which is older than what pjproject is expecting. We don't use most of pjmedia but we DO use it for SDP negotiation. Luckily disabling srtp in pjmedia doesn't interfere with it's ability to negitiate a secure channel. The proper crypto attributes are negotiated in both directions. ASTERISK-26279 #close Change-Id: Id25a92cdf3df97a26c53cffae65b6b82de33c8e2
2016-08-26channel: No hung-up on failing security requirements.Alexander Traud
In your Diaplan, if you specify same => n,Set(CHANNEL(secure_bridge_media)=1) same => n,Set(CHANNEL(secure_bridge_signaling)=1) only the SIP channel driver chan_sip supports this. All other channels drivers like res_pjsip fail. In case of failure, the original sRTP source code released the whole channel, even if not hung-up, yet. This change does not release the channel but instead hangs-up the channel. ASTERISK-26306 Change-Id: I0489f0cb660fab6673b0db8af027d116e70a66db
2016-08-26sip_to_pjsip: Migrate IPv4/IPv6 (Dual Stack) configurations.Alexander Traud
When using the migration script sip_to_pjsip.py, and your sip.conf is configured with bindaddr=::, two transports are written to pjsip.conf, one for 0.0.0.0 (IPv4) and one for [::] (IPv6). That way, PJProject listens on the IPv4 and IPv6 wildcards; a IPv4/IPv6 Dual Stack configuration on a single interface like in chan_sip. Furthermore, the script internal functions "build_host" and "split_hostport" did not parse Literal IPv6 addresses as expected (like [::1]:5060). This change makes sure, even such addresses are parsed correctly. ASTERISK-26309 Change-Id: Ia4799a0f80fc30c0550fc373efc207c3330aeb48
2016-08-25app_queue: Ensure member is removed from pending when hanging up.Joshua Colp
When dialing channels it is possible that they may not ever leave the not in use state (Local channels in particular) by the time we cancel them. If this occurs but we know they were dialed we explicitly remove them from the pending members container so that subsequent call attempts occur. ASTERISK-26299 #close Change-Id: I6ad0d17c36480c92cebf840626228ce3f7e4bd65