418 Commits

Author SHA1 Message Date
Raymond Chandler
9b488fbffd pnp 2012-06-04 15:16:30 -04:00
Travis Cross
00e32e4ec2 use SWITCH_VERSION_FULL for the sofia user agent 2012-06-01 22:22:44 +00:00
Travis Cross
c1b2472781 SWITCH_VERSION_REVISION includes the dash or dot itself 2012-06-01 22:22:44 +00:00
Travis Cross
23f8967c32
add enhanced zrtp passthrough (zrtp passthru) mode
ZRTP passthrough mode allows two ZRTP-capable clients to negotiate an
end-to-end security association through FreeSWITCH.  The clients are
therefore able to be certain that the FreeSWITCH instance mediating
the call cannot eavesdrop on their conversation.

Importantly, this capability is maintained across multiple FreeSWITCH
hops.  If widely deployed, this enables a global network architecture
where two people can speak securely with strong cryptographically
protected authentication and confidentiality.

With this commit we implement a zrtp-passthru mode that handles all
the details of the negotiation intelligently.  This mode can be
selected by setting the boolean parameter inbound-zrtp-passthru in the
sofia profile.  This will also force late-negotiation as it is
essential for correctly negotiating an end-to-end ZRTP security
association.

When an incoming call with a zrtp-hash is received and this mode is
enabled, we find the first audio and the first video zrtp-hash in the
SDP and store them as remote values on this channel.  Once a b-leg is
available, we set the local zrtp-hash values on that channel to the
remote zrtp-hash values collected from the a-leg.

Because zrtp-passthru absolutely requires that the channels negotiate
the same codec, we offer to the b-leg only codecs that the a-leg can
speak.  Once the b-leg accepts a codec, we will force that choice onto
the a-leg.

If the b-leg sends us zrtp-hash values in the signaling, we store
those as remote values on the b-leg and copy them to the local values
on the a-leg.

At this point, each leg has the zrtp-hash values from the other, and
we know we can do ZRTP passthrough mode on the call.  We send the
b-leg's zrtp-hash back to the a-leg in the 200 OK.

We then enable UDPTL mode on the rtp streams for both the audio and
the video so that we don't interfere in the ZRTP negotiation.

If the b-leg fails to return a zrtp-hash in the signaling, we set up a
ZRTP security association with the a-leg ourselves, if we are so
equipped.  Likewise, if the a-leg fails to send a zrtp-hash in the
signaling, we attempt to set up a ZRTP security association ourselves
with the b-leg.

The zrtp-passthru mode can also be enabled in the dialplan by setting
the boolean channel variable zrtp_passthru.  If enabled in this
manner, we can't force late-negotiation, so the user would need to be
sure this is configured.

If ZRTP passthrough mode is not enabled in either manner, this change
should have no effect.

Channel variables for each of the various zrtp-hash values are set,
though it is anticipated that there is no good reason to use them, so
they may be removed without warning.  For checking whether zrtp
passthrough mode was successful, we provide the channel variable
zrtp_passthru_active which is set on both legs.

Though not implemented by this commit, the changes here should make it
more straightforward to add correct zrtp-hash values to the signaling
and verify that correct hello hash values are received when FreeSWITCH
is acting as a terminating leg of the ZRTP security association.

A historical note...

This commit replaces the recently-added sdp_zrtp_hash_string method,
commit 2ab1605a8887adc62be1b75f6ef67af87ff080de.

This prior method sets a channel variable from the a-leg's zrtp-hash,
then relies on the dialplan to export this channel variable to the
b-leg, where it is put into the SDP.

While it was a great start and wonderful for testing, this approach
has some drawbacks that motivated the present work:

 * There's no good way to pass the zrtp-hash from the b-leg back to
   the a-leg.  In fact, the implementation seems to send the a-leg's
   zrtp-hash back to the originating client in the 200 OK.  This is
   not correct.

 * To support video, we'd need to have a separate dialplan variable,
   and the dialplan author would need to deal with that explicitly.

 * The API is problematic as it requires the dialplan author to
   understand intricate details of how ZRTP works to implement a
   correct dialplan.  Further, by providing too fine-grained control
   (but at the same time, not enough control) it would limit our
   ability to make the behavior smarter once people started relying on
   this.
2012-05-24 20:39:03 +00:00
Travis Cross
cb58e81c17 add editor variables to mod_sofia.h 2012-05-23 23:44:44 +00:00
Anthony Minessale
fb790bc320 block any inbound messages when queue is full; add debounce for mwi and pres on register; fix missing detach attr on new mode to process reg in new thread 2012-05-22 10:27:23 -05:00
Anthony Minessale
792b004f36 add mwi-use-reg-callid 2012-05-21 13:55:50 -05:00
Anthony Minessale
bbdcd33bde performance tweaks for sip message parsing and event system 2012-05-17 20:10:53 -05:00
Anthony Minessale
0a5a057c46 add inbound-reg-in-new-thread sofia param to launch a new thread to process each new inbound register when using heavier backends 2012-05-14 17:51:15 -05:00
Anthony Minessale
f9653fbd38 FS-4204 --resolve 2012-05-10 22:34:37 -05:00
Anthony Minessale
07204a1fb5 add param:confirm-blind-transfer var:confirm_blind_transfer that makes blind transfers keep the transferrer on the line until its confirmed that the call was completed or brings it back to the bridge. blind_transfer_ack app can be executed in the dp by the transferee to indicate sucess or fail or a sucessful bridge will automatically trigger a success 2012-05-08 08:50:41 -05:00
Anthony Minessale
a511ff3026 re-implement sla barge using eavesdrop backend 2012-05-07 13:44:16 -05:00
Anthony Minessale
5190bd0849 FS-4186 --resolve 2012-05-04 08:25:48 -05:00
Anthony Minessale
8664dc6d5a some perfomance tweaks 2012-05-03 16:31:21 -05:00
Anthony Minessale
8203475563 FS-4148 --resolve note: see switch_core_session_get_partner 2012-04-26 08:52:29 -05:00
Ken Rice
7a147e4762 Update a ton of copyright statements to make sure the dates are proper 2012-04-25 17:14:55 -05:00
Anthony Minessale
677b223579 FS-4122 --resolve this fixes the issue and eliminates the delay unless you configure it to have some 2012-04-18 09:56:06 -05:00
Ken Rice
437e502b59 fix my contact info as i havent had that email address in years 2012-04-18 11:52:02 -05:00
William King
180f535490 Adding a failed registration event and adding an auth result header on the attempt event. 2012-04-17 17:28:47 -07:00
Anthony Minessale
1145905513 FS-4106 --resolve 2012-04-13 11:18:16 -05:00
Anthony Minessale
6072da1b1f FS-3993 --resolve 2012-04-10 15:46:27 -05:00
Anthony Minessale
6f6765b8f2 start one msg thread per cpu by default 2012-03-27 16:48:30 -05:00
Anthony Minessale
8e47f3c660 FS-3937 --resolve 2012-02-22 15:26:38 -06:00
Anthony Minessale
9b02315282 add presence-disable-early sofia option to send non-specifc presence messages w/o special case for early 2012-02-07 11:10:51 -06:00
Anthony Minessale
f25c5aaf27 FS-3842 here is the from and contact change but I can't remove the user agent but I added a new param to the gateway config called options_user_agent to set something specific 2012-01-29 17:37:56 -06:00
Anthony Minessale
cde54eb5e8 FS-3842 the fix was to remove the (null) if you are asking for a to uri in the options with no username try this patch. You were not clear that you were looking for no username in the to uri. Keep in mind our system considers a 404 a sucessful response to an options request anyway but this should be what you want. 2012-01-27 12:55:09 -06:00
Anthony Minessale
b3b33ea995 FS-3794 please test this version 2012-01-26 04:46:48 -06:00
Anthony Minessale
5783078401 FS-3794 please try latest and see if you get any more missing hostnames 2012-01-24 17:38:36 -06:00
Anthony Minessale
0a503b1a77 FS-3794 revert some of baa11b2d03e8d09b18d704fa7c530f3fdff94b2e 2012-01-18 18:08:52 -06:00
Anthony Minessale
baa11b2d03 FS-3794 pre-emptive changes based on reports 2012-01-18 12:25:58 -06:00
Anthony Minessale
5b7e20133a add registration-thread-frequency param 2012-01-09 17:17:03 -06:00
Anthony Minessale
8daaec3849 FS-3794 remove delete-subs-on-register param and some tweaks based on this bug report 2012-01-03 11:40:52 -06:00
Marc Olivier Chouinard
d637453552 FS-3029 --resolve 2011-12-23 16:07:33 -05:00
Brian West
8059cdca81 FS-3771 --resolve 2011-12-22 14:03:32 -06:00
Jeff Lenk
095f439db7 FS-3762 -- proper fix for windows 2011-12-19 11:49:14 -06:00
Marc Olivier Chouinard
1ddd29bf0d FS-3071 Small fix on default value, and renaming the no-verify-date to verify-date. 2011-12-18 12:08:17 -05:00
Marc Olivier Chouinard
9574ba27f7 FS-3071 I've finally merged it all. It all look good, shouldn't affect anyone who didn't set those value 2011-12-18 11:54:38 -05:00
Marc Olivier Chouinard
947096c66d FS-3071 Added the tls extra options patch 2011-12-18 11:37:04 -05:00
Marc Olivier Chouinard
235ef72f1b FS-3071 This is the sofia changes following the addition of the passphrase in libsofia 2011-12-18 11:20:38 -05:00
Jeff Lenk
a800993698 temp fix for windows 2011-12-16 15:54:24 -06:00
Anthony Minessale
6dd5e59b05 add sofia global standby on that makes sofia not do anything but refuse to work until sofia global standby off or sofia recover is issued 2011-12-16 13:41:25 -06:00
Marc Olivier Chouinard
10dfc37770 FS-3762 --resolve
I've had to add a missing include and do some formating cleanup.
2011-12-16 15:33:22 -05:00
Marc Olivier Chouinard
15011c4fb8 FS-3768 --resolve 2011-12-16 14:31:15 -05:00
Anthony Minessale
e9bde2eb0e FS-3758 --resolve ok so I wrote my own patch but i did borrow the 2 lines of code to create a seq from the original patch! sofia changes probably need to be converted to a tag if they are to go upstream. This completely manages sub/pub from inside mod_sofia inside the db and subs can now persist and/or fail over mid dialog tested on several things like polycom/snom/yealink on SLA and presence 2011-12-15 16:30:33 -06:00
Marc Olivier Chouinard
c6633fa300 FS-849 --resolve 2011-12-15 13:20:27 -05:00
Marc Olivier Chouinard
894ba68bc5 FS-2901 --resolve 2011-12-14 21:56:00 -05:00
Anthony Minessale
d9089edf89 finishing touches for commit: b9e28f85cb35db7dd72b6760310fa3ad18e5aa2d 2011-11-29 16:23:49 -06:00
Anthony Minessale
b9e28f85cb add send_info dp app and uuid_send_info FSAPI and execute_on_sip_extra_headers and api_on_sip_extra_headers handler variables 2011-11-23 15:38:59 -06:00
Anthony Minessale
dc9bf68301 FS-3714 --resolve You are using the sip_from_host and sip_to_host which are calculated based on the response from the other end, this patch will pre-populate the variables with what it is suspeceted to be in these values but they are not guranteed to be right if there was forwarding etc and also it will not always be an ip if you send to foo@domain.com the sip_to_host will be domain.com until it replies. This is the best you will get.... 2011-11-22 17:59:14 -06:00
Anthony Minessale
dac9d6e3ea FS-3688 try this also with sofia loglevel all 9 2011-11-19 19:12:08 -06:00