summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-06-09Merge "translate: Enables native Packet-Loss Concealment (PLC) for ↵Joshua Colp
supporting codecs."
2016-06-09Merge "chan_sip: No rtpmap for static RTP payload IDs in SDP."Joshua Colp
2016-06-09Merge "BuildSystem: Avoid 'ar cru' and use 'ar cr' instead."Joshua Colp
2016-06-09Merge "Detect and use proper libraries for musl toolchains"Joshua Colp
2016-06-09Merge "Fixes to include signal.h"Joshua Colp
2016-06-09Merge "Make use of GLOB_BRACE and GLOB_NOMAGIC optional"Joshua Colp
2016-06-08Merge "res_hep_{pjsip|rtcp}: Decline module loads if res_hep had not loaded"Joshua Colp
2016-06-08Merge "Fix res_search usage"Joshua Colp
2016-06-08Merge "Fix #include poll.h and sys/cdefs.h"Joshua Colp
2016-06-08Detect and use proper libraries for musl toolchainsTimo Teräs
Change-Id: I8d9b212f70813404b82918a3f99439e500d4bfcb
2016-06-08Fixes to include signal.hTimo Teräs
POSIX defines signal.h. sys/signal.h should not be used as it is c-library internal header which may or may not exist. Notably with musl it generates warning of being incorrect. Change-Id: Ia56b0aa1d84b5c590114867b1b384a624f39a6fc
2016-06-08res_hep_{pjsip|rtcp}: Decline module loads if res_hep had not loadedMatt Jordan
A crash can occur in res_hep_pjsip or res_hep_rtcp if res_hep has not loaded and does not have a configuration file. Previously when this occurred, checks were put in to see if the configuration was loaded successfully. While this is a good idea - and has been added to the offending function in res_hep - the reality is res_hep_pjsip and res_hep_rtcp have no business running if res_hep isn't also running. As such, this patch also adds a function to res_hep that returns whether or not it successfully loaded. Oddly enough, ast_module_check returns "everything is peachy" even if a module declined its load - so it cannot be solely relied on. res_hep_pjsip and res_hep_rtcp now also check this function to see if they should continue to load; if it fails, they decline their load as well. ASTERISK-26096 #close Change-Id: I007e535fcc2e51c2ca48534f48c5fc2ac38935ea
2016-06-08Merge "chan_rtp.c: Simplify options to UnicastRTP channel creation."Joshua Colp
2016-06-08Merge "apps/app_voicemail.c and main/say.c: Add support for Icelandic language"Joshua Colp
2016-06-08Merge "ari/resource_channels: Add 'formats' to channel create/originate"Joshua Colp
2016-06-08chan_sip: No rtpmap for static RTP payload IDs in SDP.Alexander Traud
This saves around 100 bytes when G.711, G.722, G.729, and GSM are advertised in SDP. This reduces the chance to hit the MTU bearer of 1300 bytes for SIP over UDP, if many codecs are allowed in Asterisk. This new feature is enabled together with the optional feature compactheaders=yes via the file sip.conf. ASTERISK-25578 #close Change-Id: I16491b1937862de26f84fa0ffe679a6bab925044
2016-06-07Merge "res_odbc: Implement a connection pool."Joshua Colp
2016-06-07res_odbc: Implement a connection pool.Joshua Colp
Testing has shown that our usage of UnixODBC is problematic due to bugs within UnixODBC itself as well as the heavy weight cost of connecting and disconnecting database connections, even when pooling is enabled. For users of UnixODBC 2.3.1 and earlier crashes would occur due to insufficient protection of the disconnect operation. This was fixed in UnixODBC 2.3.2 and above. For users of UnixODBC 2.3.3 and higher a slow-down would occur under heavy database use due to repeated connection establishment. A regression is present where on each connection the database configuration is cached again, with the cache growing out of control. The connection pool implementation present in this change helps to mitigate these issues by reducing how much we connect and disconnect database connections. We also solve the issue of crashes under UnixODBC 2.3.1 by defaulting the maximum number of connections to 1, returning us to the previous working behavior. For users who may have a fixed version the maximum concurrent connection limit can be increased helping with performance. The connection pool works by keeping a list of active connections. If the connection limit has not been reached a new connection is established. If the connection limit has been reached then the request waits until a connection becomes available before continuing. ASTERISK-26074 #close ASTERISK-26054 #close Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff
2016-06-07apps/app_voicemail.c and main/say.c: Add support for Icelandic languageÖrn Arnarson
Icelandic has some weird grammar rules when dealing with dates and numbers. There are different genders used depending on which number you're dealing with, and only a handful of numbers do change depending on the gender. There is also an implied gender in several cases. This patch was originally written for asterisk 1.6, and has been in use for several years without crashes. I cleaned it up a bit and rewrote what was necessary for Asterisk 13. The functions were copied from other similar languages and modified where appropriate. If i recall correctly, the German and Danish functions were used as a base. ASTERISK-26087 Reported by: Örn Arnarson Tested by: Örn Arnarson Change-Id: Ib7d8bd7b0fede5767921ed821315b5b508c0e665
2016-06-07res_srtp: Instead of libSRTP use OpenSSL as random source.Alexander Traud
Since libSRTP 1.5, its Random Number Generator (RNG) is not maintained anymore. Therefore, the symbol RAND_bytes is used instead of crypto_get_random. ASTERISK-24436 #close Change-Id: Iea0bae4d4e3c9aa0926ea442b6484b5159789d96
2016-06-07BuildSystem: Avoid 'ar cru' and use 'ar cr' instead.Alexander Traud
In several internal library projects, the files are archived with the help of 'ar cr'. Only the projects editline and the Objective Open H.323 stack implementation in C (ooh323c) use 'ar cru' instead. Recently, some platforms changed the default parameters of AR which creates "/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')". For consistency and to avoid this message all projects use 'ar cr' now. ASTERISK-26091 #close Change-Id: I710a9b1c01c1b5a1931a646098c044c8161ead40
2016-06-06chan_rtp.c: Simplify options to UnicastRTP channel creation.Richard Mudgett
Change the awkward and not as flexible UnicastRTP options format From: Dial(UnicastRTP/127.0.0.1[/[<engine>][/[<codec>]]]) To: Dial(UnicastRTP/127.0.0.1[/[<options>]]) Where <options> can be standard Asterisk flag options: c(<codec>) - Specify which codec/format to use such as 'ulaw'. e(<engine>) - Specify which RTP engine to use such as 'asterisk'. More option flags can be easily added later such as the codec's RTP payload type to use when the codec does not have a static payload type defined. Change-Id: I0c297aaf09e2ee515536cb7437bb8042ff8ff3c9
2016-06-05translate: Enables native Packet-Loss Concealment (PLC) for supporting codecs.Jaco Kroon
ASTERISK-25629 #close Change-Id: Ibfcf0670e094e9718d82fd9920f1fb2dae122006
2016-06-04core/dial: New channel variable FORWARDERNAMEAlexei Gradinari
Added a new channel variable FORWARDERNAME which indicates which channel was responsible for a forwarding requests received on dial attempt. Fixed a bug in the app_queue: FORWARD_CONTEXT is not used. ASTERISK-26059 #close Change-Id: I34e93e8c1b5e17776a77b319703c48c8ca48e7b2
2016-06-03ari/resource_channels: Add 'formats' to channel create/originateGeorge Joseph
If you create a local channel and don't specify an originator channel to take capabilities from, we automatically add all audio formats to the new channel's capabilities. When we try to make the channel compatible with another, the "best format" functions pick the best format available, which in this case will be slin192. While this is great for preserving quality, it's the worst for performance and overkill for the vast majority of applications. In the absense of any other information, adding all formats is the correct thing to do and it's not always possible to supply an originator so a new parameter 'formats' has been added to the channel create/originate functions. It's just a comma separated list of formats to make availalble for the channel. Example: "ulaw,slin,slin16". 'formats' and 'originator' are mutually exclusive. To facilitate determination of format names, the format name has been added to "core show codecs". ASTERISK-26070 #close Change-Id: I091b23ecd41c1b4128d85028209772ee139f604b
2016-06-03Merge "core/manager: Add uptime field to FullyBooted"Joshua Colp
2016-06-03Make use of GLOB_BRACE and GLOB_NOMAGIC optionalTimo Teräs
These flags are non-portable GNU extensions. Make their use optional. This fixes complication error on e.g. musl c-library based systems. Change-Id: I0aa06efc62aa8995f091445c8b762a75a91042f3
2016-06-02Fix res_search usageTimo Teräs
Resolver state is not part of res_search API. This fixes compilation error: dns.c:261:8: error: too many arguments to function 'res_search' ret = res_search(&dns_state, Change-Id: Ia600a58557040df83f744da3dde23225293845a5
2016-06-02Fix #include poll.h and sys/cdefs.hTimo Teräs
POSIX defines poll.h, sys/poll.h should not be used at is c-library internal header which may or may not exist. Notable in musl it generates warning of being incorrect. And add explict include of sys/cdefs.h where needed. Change-Id: I142930df53fe7585a06b854b6faddc5301e024be
2016-06-02core/manager: Add uptime field to FullyBootedNiklas Larsson
Add Uptime and LastReload to event FullyBooted. ASTERISK-26058 #close Reported by: Niklas Larsson Change-Id: I909b330801c0990d78df9b272ab0adc95aecb15e
2016-06-02alembic: Fix migration.Joshua Colp
The 81b01a191a46_pjsip_add_contact_reg_server.py script was attempting to use UniqueConstraint and failing. It was not imported and after importing it also continued to fail. I've changed the script to use the explicit name of the constraint instead. Change-Id: I2438b0be90b7ce583b47dd27983c0c1a02cea5b9
2016-06-01Merge "pjsip_distributor.c: Use correct rdata info access method (Part 2)."Joshua Colp
2016-06-01Merge "logging,cdr,cel: Fix stringfield memory leak."Joshua Colp
2016-06-01Merge "pjproject_bundled: Move to pjproject 2.5"Joshua Colp
2016-06-01logging,cdr,cel: Fix stringfield memory leak.Richard Mudgett
The stringfields refactor to allow adding stringfields to the end of a structure (f6f4cf459f43f072604927209b39646f84aaa2e2) exposed some incomplete cleanup code by some stringfield users. The most noticeable leaker is the logging system where there is a leak for every log message generated. ASTERISK-26078 #close Reported by: Etienne Lessard Patches: jira_asterisk_26078_v13.patch (license #5621) patch uploaded by Richard Mudgett Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782
2016-05-31Merge "Expand the scope of Dial Events"Joshua Colp
2016-05-31pjsip_distributor.c: Use correct rdata info access method (Part 2).Richard Mudgett
The pjproject doxygen for rdata->msg_info.info says to call pjsip_rx_data_get_info() instead of accessing the struct member directly. You need to call the function mostly because the function will generate the struct member value if it is not already setup. Change-Id: I4d519385a577f3e9d9193a88125e493cf17fa799
2016-05-31Merge "followme: allow disabling callee prompt"Joshua Colp
2016-05-31Merge "ARI: Re-implement the ARI dial command, allowing for early bridging."zuul
2016-05-31Merge "res_pjsip_mwi_body_generator: Re-order the body items"zuul
2016-05-31Expand the scope of Dial EventsMark Michelson
Dial events up to this point have come in two flavors * A Dial event with no status to indicate that dialing has begun * A Dial event with a status to indicate that dialing has ended With this change, Dial events have been expanded to also give intermediate events, such as "RINGING", "PROCEEDING", and "PROGRESS". This is especially useful for ARI dialing, as it gives the application writer the opportunity to place a channel into an early bridge when early media is detected. AMI handles these in-progress dial events by sending a new event called "DialState" that simply indicates that dial state has changed but has not ended. ARI never distinguished between DialBegin and DialEnd, so no change was made to the event itself. Another change here relates to dial forwards. A forward-related event was previously only sent when a channel was successfully able to forward a call to a new channel. With this set of changes, if forwarding is blocked, we send a Dial event with a forwarding destination but no forwarding channel, since we were prevented from creating one. This is again useful for ARI since application writers can now handle call forward attempts from within their own application. ASTERISK-25925 #close Reported by Mark Michelson Change-Id: I42cbec7730d84640a434d143a0d172a740995543
2016-05-31Merge "res_pjsip: add "via_addr", "via_port", "call_id" to contact"Joshua Colp
2016-05-31Merge "res_pjsip: Add clarifying documentation to PJSIP_HEADER help text"zuul
2016-05-31Merge "multicast RTP: Add dialing options"zuul
2016-05-31Merge "res_pjsip: chatty verbose messages"zuul
2016-05-30res_pjsip_mwi_body_generator: Re-order the body itemsGeorge Joseph
Re-ordered the body items so Message-Account is second. Messages-Waiting: no Message-Account: sip:1571@<IP Removed>:5060 Voice-Message: 0/0 (0/0) ASTERISK-26065 #close Reported-by: Ross Beer Change-Id: If5d35a64656eac98c2dd5e490cc0b2807bed80c3
2016-05-30pjproject_bundled: Move to pjproject 2.5George Joseph
Although all the patches we had against 2.4.5 were applied by Teluu, a new bug was introduced preventing re-use of tcp and tls transports This patch removes all the previous patches against 2.4.5, updates the version to 2.5, and adds a new patch to correct the transport re-use problem. Change-Id: I0dc6c438c3910f7887418a5832ca186aea23d068
2016-05-27res_pjsip: Add clarifying documentation to PJSIP_HEADER help textRusty Newton
Added notes about when you can read or write headers. Specifically about being able to read on the inbound channel and write on an outbound channel. ASTERISK-26063 #close Reported by: Private Name Tested by: Rusty Newton Change-Id: Ibeb64af17d1f6451028b3c29855a3f151a01d8c5
2016-05-27multicast RTP: Add dialing optionsMark Michelson
This adds a new parameter to the end of a multicast RTP dialing string. This parameter defines the following options: * i: Set the interface from which multicast RTP is sent * l: Set whether multicast packets are looped back to the sender * t: Set the TTL for multicast packets * c: Set the codec to use for RTP ASTERISK-26068 #close Reported by Mark Michelson Change-Id: I033b706b533f0aa635c342eb738e0bcefa07e219
2016-05-27ARI: Re-implement the ARI dial command, allowing for early bridging.Mark Michelson
ARI dial had been implemented using the Dial API. This made great sense when dialing was 100% separate from bridging. However, if a channel were to be added to a bridge during the dial attempt, there would be a conflict between the dialing thread and the bridging thread. Each would be attempting to read frames from the dialed channel and act on them. The initial attempt to make the two play nice was to have the Dial API suspend the channel in the bridge and stay in charge of the channel until the dial was complete. The problem with this was that it was riddled with potential race conditions. It also was not well-suited for the case where the channel changed which bridge it was in during the dial. This new approach removes the use of the Dial API altogether. Instead, the channel we are dialing is placed into an invisible ARI dialing bridge. The bridge channel thread handles incoming frames from the channel. If the channel is added to a real bridge, it is departed from the invisible bridge and then added to the real bridge. Similarly, if the channel is removed from the real bridge, it is automatically added back to the invisible bridge if the dial attempt is still active. This approach keeps the threading simple by always having the channel being handled by bridge channel threads. ASTERISK-25925 Change-Id: I7750359ddf45fcd45eaec749c5b3822de4a8ddbb