Commit Graph

29212 Commits

Author SHA1 Message Date
Jenkins2
a3b36b5043 Merge "alembic: Add dtls_fingerprint column in ps_endpoints table" into 13 2017-08-28 06:43:00 -05:00
Andre Nazario
a45af32983 chan_pjsip: Add tag info in CHANNEL function
Create local_tag and remote_tag in CHANNEL info to get tag from From and
To headers of a SIP dialog.

ASTERISK-27220

Change-Id: I59b16c4b928896fcbde02ad88f0e98922b15d524
2017-08-25 23:06:10 -03:00
Sean Bright
9e6efcace5 voicemail: Fix various abuses of mkstemp
mkstemp() returns a unique filename, but appending an extension to that
filename does not guarantee uniqueness. Instead, use mkdtemp() and we
can put whatever extension we want on the files that we create inside
the directory.

In the case of app_minivm, we also now properly clean up any temporary
files that we create.

ASTERISK-20858 #close
Reported by: Walter Doekes

Change-Id: I30ad04f0e115f0b11693ff678ba5184d8b938e43
2017-08-25 17:02:17 -04:00
Sean Bright
01b5913ce0 app_record: Resolve some absolute vs. relative filename bugs
If the Record() application is called with a relative filename that
includes directories, we were not properly creating the intermediate
directories and Record() would fail.

Secondarily, updated the documentation for RECORDED_FILE to mention
that it does not include a filename extension.

Finally, rewrote the '%d' functionality to be a bit more straight
forward and less noisy.

ASTERISK-16777 #close
Reported by: klaus3000

Change-Id: Ibc2640cba3a8c7f17d97b02f76b7608b1e7ffde2
2017-08-25 13:25:44 -04:00
Jenkins2
28857047da Merge "app_queue: Evaluate realtime queues when running dialplan functions" into 13 2017-08-25 09:07:53 -05:00
Jenkins2
c0251ae004 Merge "app_voicemail: Honor escape digits in "greeting only" mode" into 13 2017-08-25 08:12:26 -05:00
Florian Floimair
bf178a0f4f alembic: Add dtls_fingerprint column in ps_endpoints table
The ps_endpoints table was missing the dtls_fingerprint column
introduced with commit adba2a8d7f.

ASTERISK-27168 #close

Change-Id: I9cb5006f7f50718b5239919562773adabb334cfd
2017-08-25 08:09:35 -05:00
Matt Jordan
fff2f68616 main/app: Only look to end of file if ':end' is specified, and not just ':'
There is a little known feature in app_controlplayback that will cause the
specified offset to be used relative to the end of a file if a ':end' is
detected within the filename.

This feature is pretty bad, but okay.

However, a bug exists in this code where a ':' detected in the filename
will cause the end pointer to be non-NULL, even if the full ':end' isn't
specified. This causes us to treat an unspecified offset (0) as being
"start playing from the end of the file", resulting in no file playback
occurring.

This patch fixes this bug by resetting the end pointer if ':end' is not
found in the filename.

ASTERISK-23608 #close
Reported by: Jonathan White

Change-Id: Ib4c7b1b45283e4effd622a970055c51146892f35
(cherry picked from commit 13efea24f7)
2017-08-24 13:37:52 -05:00
Sean Bright
579d4593ac app_queue: Evaluate realtime queues when running dialplan functions
ASTERISK-19103 #close
Reported by: Jim Van Meggelen

Change-Id: I4bd32a9d1fcebb8ac56bff0e084d4f53e31b692b
2017-08-24 10:42:24 -04:00
Sean Bright
0af145de2d app_voicemail: Honor escape digits in "greeting only" mode
ASTERISK-21241 #close
Reported by: Eelco Brolman
Patches:
	Patch uploaded by Eelco Brolman (License 6442)

Change-Id: Icbe39b5c82a49b46cf1d168dc17766f3d84f54fe
2017-08-24 09:03:40 -05:00
Sean Bright
d251a961ac res_smdi: Clean up memory leak
Change-Id: I1e33290929e1aa7c5b9cb513f8254f2884974de8
2017-08-24 09:39:24 -04:00
Jenkins2
e8cfd5a80f Merge "bridge_softmix.c: Remove always true test." into 13 2017-08-23 11:20:33 -05:00
Richard Mudgett
3f22b53349 bridge_softmix.c: Remove always true test.
Change-Id: I26238df2ff0d0f6dfe95c3aa35da588f1ee71727
2017-08-22 11:04:15 -05:00
Sungtae Kim
b88c3a4209 app_queue: Fix initial hold time queue statistic
Fixed to use correct initial value and fixed to use the
correct queue info to check the first value.

ASTERISK-27204

Change-Id: Ia9e36c828e566e1cc25c66f73307566e4acb8e73
2017-08-22 08:27:47 -05:00
Jenkins2
71753d67f4 Merge "res_xmpp: fix inverted return code check in OAuth" into 13 2017-08-22 07:43:35 -05:00
Torrey Searle
8e99969000 res/res_pjsip_session: allow SDP answer to be regenerated
If an SDP answer hasn't been sent yet, it's legal to change it.
This is required for PJSIP_DTMF_MODE to work correctly, and can
also have use in the future for updating codecs too.

ASTERISK-27209 #close

Change-Id: Idbbfb7cb3f72fbd96c94d10d93540f69bd51e7a1
2017-08-22 12:22:56 +00:00
Jenkins2
3fffa7ae86 Merge "res_calendar_icalendar: Properly handle recurring events" into 13 2017-08-22 05:07:03 -05:00
Michael Kuron
4faf77feec res_xmpp: fix inverted return code check in OAuth
fetch_access_token calls func_curl via ast_func_read. The latter returns 0 upon
success and -1 if the function is not available.
This commit inverts the return code check so that an error is printed if the
module is not loaded and not if it is loaded.

ASTERISK-27207 #close

Change-Id: I9ef903f80702d1218e8701f65a4e5e918e6548fb
2017-08-22 00:34:54 -05:00
Sean Bright
a6251ec373 res_calendar_icalendar: Properly handle recurring events
When looking for recurring events, use the correct end time based on the
configured 'timeframe.'

ASTERISK-27174 #close
Reported by: Mark Thompson

Change-Id: Id90c3cfc79d561a5521d79be176683e225f2edef
2017-08-17 13:14:54 -04:00
George Joseph
572b5307e0 Fix downloader not working with curl
The codec/dpma downloader wasn't handling curl correctly.  The logic
that transforms makeopts into a bash-sourceable file wasn't
handling the make 'or' command in DOWNLOAD_TIMEOUT so bash was
looking for an 'or' command.

That logic has been eliminated.  Instead of trying to transform
and source makeopts, the downloader now calls a make scriptlet
to print the value of a specific variable.  This way, make handles
the ors (or any other make construct that happens to creep into
that file).

ASTERISK-27202
Reported by: Sean McCord

Change-Id: Iadfb6693528e4d4da7b8bb201fa66da2c71c7f99
2017-08-16 15:04:12 -06:00
Jenkins2
b461fe8bcd Merge "configure: Check cache for valid pjproject tarball before downloading." into 13 2017-08-16 07:06:55 -05:00
Richard Mudgett
8594f73a81 configure: Check cache for valid pjproject tarball before downloading.
On a fresh Asterisk source directory, the bundled pjproject tarball is
unconditionally downloaded even if the tarball is already in a specified
cache directory.

* Made check if the pjproject tarball is valid in the cache directory
before downloading the tarball on a fresh source directory.

Change-Id: Ic7ec842d3c97ecd8dafbad6f056b7fdbce41cae5
2017-08-15 15:17:22 -05:00
Richard Mudgett
d08342b0cb res_pjsip: Fix prune_on_boot to remove only contacts for the host.
* Check that the contact's reg_server matches the host's name before
deleting any prune_on_boot contacts.  We don't want to delete reliable
transport contacts made with other servers if the ps_contacts database
table is shared with other servers.

Thanks to Ross Beer for pointing out that the original prune logic would
delete reliable transport contacts from other servers.

ASTERISK-27147

Change-Id: I8e439d0d1c266ffdfd7b73d1e5e466180a689bd0
2017-08-15 11:21:20 -05:00
Jenkins2
fa50a3def9 Merge "res_xmpp: Google OAuth 2.0 protocol support for XMPP / Motif" into 13 2017-08-15 08:18:29 -05:00
Andrey Egorov
54e3ac402f res_xmpp: Google OAuth 2.0 protocol support for XMPP / Motif
Add ability to use tokens instead of passwords according to Google OAuth 2.0
protocol.

ASTERISK-27169
Reported by: Andrey Egorov
Tested by: Andrey Egorov

Change-Id: I07f7052a502457ab55010a4d3686653b60f4c8db
2017-08-15 11:08:59 +00:00
George Joseph
b81de2c896 Merge "res_pjsip_outbound_registration.c: Re-REGISTER on transport shutdown." into 13 2017-08-14 14:56:29 -05:00
Jenkins2
1bfb4047ae Merge "res_pjsip: Remove ephemeral registered contacts on transport shutdown." into 13 2017-08-14 13:14:13 -05:00
Jenkins2
cc4735742c Merge "res_pjsip: PJSIP Transport state monitor refactor." into 13 2017-08-14 13:05:29 -05:00
Jenkins2
1ff6082da9 Merge "res_pjsip_transport_management.c: Rename some variables." into 13 2017-08-14 12:49:45 -05:00
Richard Mudgett
bac3e8c08b STUN/netsock2: Fix some valgrind uninitialized memory findings.
* netsock2.c: Test the addr->len member first as it may be the only member
initialized in the struct.

* stun.c:ast_stun_handle_packet(): The combinded[] local array could get
used uninitialized by ast_stun_request().  The uninitialized string gets
copied to another location and could overflow the destination memory
buffer.

These valgrind findings were found for ASTERISK_27150 but are not
necessarily a fix for the issue.

Change-Id: I55f8687ba4ffc0f69578fd850af006a56cbc9a57
2017-08-10 14:27:15 -05:00
Richard Mudgett
1cf2c79f37 res_pjsip_outbound_registration.c: Re-REGISTER on transport shutdown.
The fix for the issue is broken up into three parts.

This is part three which handles the client side of REGISTER requests.
The registered contact may no longer be valid on the server when the
transport used is reliable and the connection is broken.

* Re-REGISTER our contact if the reliable transport is broken after
registration completes.  We attempt to re-REGISTER immediately to minimize
the time we are unreachable.  Time may have already passed between the
connection being broken and the loss being detected.

* Reorder sip_outbound_registration_state_alloc() so the STATSD_GUAGE's
are still correct if an allocation failure happens.

ASTERISK-27147

Change-Id: I3668405b1ee75dfefb07c0d637826176f741ce83
2017-08-10 12:13:18 -05:00
Richard Mudgett
07d026b4cd res_pjsip: Remove ephemeral registered contacts on transport shutdown.
The fix for the issue is broken up into three parts.

This is part two which handles the server side of REGISTER requests when
rewrite_contact is enabled.  Any registered reliable transport contact
becomes invalid when the transport connection becomes disconnected.

* Monitor the rewrite_contact's reliable transport REGISTER contact for
shutdown.  If it is shutdown then the contact must be removed because it
is no longer valid.  Otherwise, when the client attempts to re-REGISTER it
may be blocked because the invalid contact is there.  Also if we try to
send a call to the endpoint using the invalid contact then the endpoint is
not likely to see the request.  The endpoint either won't be listening on
that port for new connections or a NAT/firewall will block it.

* Prune any rewrite_contact's registered reliable transport contacts on
boot.  The reliable transport no longer exists so the contact is invalid.

* Websockets always rewrite the REGISTER contact address and the transport
needs to be monitored for shutdown.

* Made the websocket transport set a unique name since that is what we use
as the ao2 container key.  Otherwise, we would not know which transport we
find when one of them shuts down.  The names are also used for PJPROJECT
debug logging.

* Made the websocket transport post the PJSIP_TP_STATE_CONNECTED state
event.  Now the global keep_alive_interval option, initially idle shutdown
timer, and the server REGISTER contact monitor can work on wetsocket
transports.

* Made the websocket transport set the PJSIP_TP_DIR_INCOMING direction.
Now initially idle websockets will automatically shutdown.

ASTERISK-27147

Change-Id: I397a5e7d18476830f7ffe1726adf9ee6c15964f4
2017-08-10 12:13:18 -05:00
Richard Mudgett
ca261d4b70 res_pjsip: PJSIP Transport state monitor refactor.
The fix for the issue is broken up into three parts.

This is part one which refactors the transport state monitor code to allow
more modules to be able to monitor transports.

* Pull the management of PJPROJECT's transport state callback code from
res_pjsip_transport_management.c into res_pjsip.  Now other modules can
dynamically add and remove themselves from transport monitoring without
worrying about breaking PJPROJECT's callback chain.

* Add the ability for other modules to get a callback whenever a specific
transport is shutdown.

ASTERISK-27147

Change-Id: I7d9a31371eb1487c9b7050cf82a9af5180a57912
2017-08-10 12:13:18 -05:00
Richard Mudgett
162f6ab845 res_pjsip_transport_management.c: Rename some variables.
* Use monitored instead of the misleading keepalive name.

Change-Id: I9e5bcbb4ab2b82d49bcd0f06dfe85d15e0b552b6
2017-08-10 12:13:18 -05:00
Jenkins2
7ad750477d Merge "res_pjsip_messaging: IPv6 receive address needs brackets" into 13 2017-08-10 11:00:44 -05:00
Scott Griepentrog
22575b6342 res_pjsip_messaging: IPv6 receive address needs brackets
When handling an incoming SIP MESSAGE, PJSIP
attaches the IP address that the message was
received from to the message in the variable
PJSIP_RECVADDR.  When the IP address is IPv6
the :PORT appended results in an unparseable
mess. By using an additional bit flag on the
pj_sockaddr_print call, the conventional use
of brackets around the address is achieved.

ASTERISK-27193 #close

Change-Id: I12342521f2ce87a5b6e4883d480a3fd957aa9fd9
2017-08-10 09:21:02 -05:00
Joshua Colp
0cf2e60161 Merge "configure: Add --with-download-cache option" into 13 2017-08-10 06:58:01 -05:00
Jenkins2
9bc114ffba Merge "res_rtp_asterisk: enable rtcp & QOS stats on native bridge" into 13 2017-08-09 15:48:42 -05:00
Joshua Colp
b5eca43b29 Merge "res_rtp_asterisk: Make P2P bridge Asymmetric codec aware" into 13 2017-08-09 14:54:26 -05:00
George Joseph
363d61ef58 configure: Add --with-download-cache option
To make building without an internet connection easier, a new
./configure option '--with-download-cache' was added that sets
the cache for externals (like pjproject, the codecs and the DPMA),
AND the sounds files.  It can also be specified as an environment
variable named "AST_DOWNLOAD_CACHE".  The existing
'--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and
'--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable
remain and if specified, will override '--with-downloads-cache'.

Change-Id: I5c3cf15ee61e8fe191b52732303e969854f8d861
2017-08-09 07:01:33 -06:00
Jenkins2
0493f08468 Merge "res_pjsip_session: Release media resources on session end quicker." into 13 2017-08-07 18:48:14 -05:00
Jenkins2
f75f6c71f8 Merge "res_pjsip_nat.c: Remove unnecessary CMP_STOP." into 13 2017-08-07 08:28:18 -05:00
Jenkins2
3cf30b4544 Merge "Support GMIME 3.0" into 13 2017-08-07 08:05:45 -05:00
Torrey Searle
3608f96ea3 res_rtp_asterisk: enable rtcp & QOS stats on native bridge
Asterisk wasn't generating or forwarding RTCP packets when native
bridge was activated.  Also the stats weren't available via
CHANNEL(qos). Now the RTCP stats are always calculated.

ASTERISK-27158 #close

Change-Id: I46fb8f61c95e836b9d2dda6054b0cf205c16037b
2017-08-07 12:07:51 +00:00
Joshua Colp
0de7312fac res_pjsip_session: Release media resources on session end quicker.
A change was made long ago where the session was kept around
until the underlying INVITE session had been destroyed. This
had the side effect of also keeping the underlying media resources
around for this time as well.

This change ensures that when we know the session is ending we
release the media resources immediately.

ASTERISK-27110

Change-Id: I643e431d5c3bf05cda220c1d39e824a505a29b82
2017-08-05 11:39:55 +00:00
Corey Farrell
905c4ca3dc app_privacy: remove unused header asterisk/image.h
Change-Id: I56ed530633a642633b18383821069e806c92ae82
2017-08-04 14:17:16 -05:00
Jenkins2
6dd12aaacd Merge "Fix compile error for old versions of GCC." into 13 2017-08-04 12:37:05 -05:00
Jenkins2
672af3c0ea Merge "Correct some leaks in unit tests." into 13 2017-08-04 11:01:37 -05:00
Jenkins2
b1537ce7f6 Merge "res_pjsip_transport_websocket.c: Fix serializer ref leak." into 13 2017-08-04 10:14:49 -05:00
Tzafrir Cohen
38dbc708e7 Support GMIME 3.0
Support building the Asterisk httpd with version 3.0 of gmime as
well as earlier versions of that library.

ASTERISK-27173

Change-Id: I7e13dd05a3083ccb0df2dabf83110223f6a9fa8f
2017-08-04 09:44:27 -05:00