Commit Graph

469 Commits

Author SHA1 Message Date
Michael Jerris b15ac31174 dont ever return success when we don't end up with a new session 2013-03-28 11:24:49 -04:00
Anthony Minessale 4fe24be75d fix bug where originate can return success when it should not 2013-03-27 11:28:43 -05:00
Anthony Minessale de9714d772 FS-5194 --resolve 2013-03-19 09:16:36 -05:00
Anthony Minessale ee308f00de FS-4875 --resolve 2013-03-15 09:36:57 -05:00
Anthony Minessale aa8f7c975f fix bridge_early_media in transcoding situation 2013-02-28 18:44:38 -06:00
Anthony Minessale 86c1dbee2f FS-5136 set ringback and bridge_early_media=true and it should fall to playing the ringback when the 180 hits 2013-02-28 14:52:33 -06:00
Anthony Minessale 864598caeb FS-5121 --resolve 2013-02-28 09:58:57 -06:00
Jeff Lenk dc2c11f13f FS-4768 initial add of vs2012 build support 2012-12-29 14:57:15 -06:00
Anthony Minessale 3bc875741d FS-4914 --resolve 2012-12-06 10:11:11 -06:00
Anthony Minessale 924c524197 fix some delay regressions 2012-12-05 13:17:50 -06:00
Anthony Minessale d4f8a79299 try to improve audio stream sync 2012-11-28 23:12:35 -06:00
Anthony Minessale 4baec06540 add api_on_pre_originate 2012-10-30 11:06:33 -05:00
Anthony Minessale c9d6b801ab add calls to execute_on_post_originate for a leg too 2012-10-30 09:05:41 -05:00
Anthony Minessale 4b5cdd87f1 refactor 2012-10-29 11:46:32 -05:00
Anthony Minessale 3099445a95 add originated_legs and originate_causes to A leg when present in an originate to detail the B leg data 2012-10-18 13:22:52 -04:00
Anthony Minessale 155ecd9650 FS-4636 fix regression 2012-09-26 11:25:42 -05:00
Anthony Minessale ef9af7dc94 FS-4636 --resolve I think this is an ok change so we'll push it. 2012-09-21 10:15:45 -05:00
Stefan Knoblich 416f026f8c FreeSWITCH: Add preprocessor constant for default callerid number
SWITCH_DEFAULT_CLID_NUMBER and replace all occurrences
in the FreeSWITCH codebase.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-09-17 21:32:18 +02:00
Anthony Minessale 631c976f59 don't put casue from unanswered pickups as result of originate 2012-09-12 10:22:03 -05:00
Anthony Minessale 02c24da081 pull cause from channels in ent originate when none of them answer or the call times out 2012-09-11 10:38:29 -05:00
Anthony Minessale 1400a31cfa plan b 2012-09-10 20:57:07 -05:00
Anthony Minessale a0eef6a111 revert 2012-09-10 20:49:32 -05:00
Anthony Minessale c698de5c07 end faster when only pickup endpoints are left 2012-09-10 20:47:57 -05:00
Anthony Minessale f71b67e02c hangup pickup chans with no answer if they are the only ones left 2012-09-10 11:14:19 -05:00
Anthony Minessale b01976942c also allow early_ok flag on caller_channel 2012-09-04 12:38:29 -05:00
Anthony Minessale 945d1141c5 set channel vars with result of group dial 2012-09-04 11:25:04 -05:00
Anthony Minessale a8ce9ac29f tweak 2012-08-30 17:17:15 -05:00
Anthony Minessale 35f0e2ff3a add uuid_early_ok 2012-08-30 16:51:06 -05:00
Anthony Minessale fea44bb2c5 add ignore_early_media=consume for hmmhesays 2012-08-30 15:14:38 -05:00
Anthony Minessale 6ec4514c68 FS-4450 this is pre-emptive, This is the only way I can see an endless loop here 2012-07-20 19:15:04 -05:00
Anthony Minessale 42f296de9b FS-4331 FS-4424 --resolve 2 for one sale 2012-07-19 17:39:42 -05:00
Anthony Minessale 4f7122c866 followup 2012-07-19 16:12:33 -05:00
Anthony Minessale b434cac526 wait forever when you call a pickup endpoint by itself 2012-07-19 15:49:39 -05:00
Anthony Minessale bf20f52452 add execute_on_post_originate and api_on_post_originate to run on chosen newly originated channels vs execute_on_originate which runs on all candidates 2012-07-05 12:34:09 -05:00
Anthony Minessale dca6e2bb8e FS-4359 --resolve 2012-06-28 12:12:44 -05:00
Anthony Minessale f685e4c504 allow ep_codec_string to draw from absolute_codec_string before the profile prefs 2012-06-01 10:06:28 -05:00
Anthony Minessale 8bb55ed4bf abstract out originate_signal_bond to a function to avoid confustion and regressions 2012-05-29 13:10:15 -05: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 2ab1605a88.

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
Anthony Minessale 092a0f8b5f FS-4194 --resolve 2012-05-07 13:09:51 -05:00
Anthony Minessale b43fa94551 FS-4192 --resolve found the problem, this might also fix your intercept bug 2012-05-07 10:05:56 -05:00
Anthony Minessale 7f76b67f5d FS-4191 --resolve 2012-05-07 08:17:41 -05:00
Anthony Minessale 64d4d9ea57 add pickup endpoint and app to dptools add pickup/keyname to forked dial, then route a call to call app pickup(keyname) to have your channel return from originate. sub to pickup+keyname or presence map the pickup proto to use on blf 2012-05-04 18:59:34 -05:00
Anthony Minessale 940636588c FS-4166 2012-04-30 17:51:31 -05:00
Anthony Minessale ae23edad9c FS-4111 --resolve 2012-04-18 14:49:00 -05:00
Ken Rice c5554eb939 Copyright date update. 2012-04-18 11:52:02 -05:00
Anthony Minessale 456b07eb8b FS-4125 --resolve you should really switch to {} when you know you have one dial string but i'll add this as a convienence 2012-04-17 16:51:40 -05:00
Anthony Minessale 385a92cec7 add origination_nested_vars=true to allow vars within vars in originate strings e.g. [originate {origination_nested_vars=true,TEST=,var=,recur=W00t}user/1004 3000] will end up as w00t 2012-04-11 15:30:37 -05:00
Anthony Minessale 995ae2621c FS-3769 --resolve 2012-04-10 16:17:16 -05:00
Anthony Minessale d4116bb615 FS-4098 try this patch and see if you get the new error, it may mean the file is not seekable or has been deleted 2012-04-10 10:15:15 -05:00
Anthony Minessale 0b992a2bd2 FS-4089 --resolve 2012-04-09 12:35:26 -05:00
Anthony Minessale 973a39e07f FS-4049 revert 2012-03-28 14:28:05 -05:00
Anthony Minessale 80b18bb266 FS-4049 2012-03-28 13:41:48 -05:00
Anthony Minessale fb1d45b4bb FS-4049 try this 2012-03-28 12:43:13 -05:00
Anthony Minessale 2c8ca5cfdb add sync 2012-03-27 18:48:16 -05:00
Anthony Minessale 46810f58d3 FS-4049 try this 2012-03-27 13:08:49 -05:00
Anthony Minessale e31a35a7be FS-3973 --resolve we can go with this for now and ponder the other problem for later 2012-03-09 11:43:37 -06:00
Marc Olivier Chouinard 6d7ab6e230 FS-3765 --resolve 2011-12-16 14:08:26 -05:00
Marc Olivier Chouinard e081e8045e FS-3321 --resolve 2011-12-15 12:16:41 -05:00
Anthony Minessale 4e014c4915 FS-3688 refactor of cancel handling code in bridge 2011-12-07 17:42:52 -06:00
Anthony Minessale f41020a625 FS-3727 --resolve 2011-11-29 08:28:10 -06:00
Anthony Minessale 4ce8f5e28e FS-3688 some more general changes during proxy media 2011-11-28 13:38:05 -06:00
Anthony Minessale 9ecf187dd9 use the non-signal checking version of switch_channel_up/down in the core 2011-11-18 13:18:04 -06:00
Anthony Minessale 3a121a1bff FS-3675 --resolve incorrect fix in 5dd463532c 2011-11-10 10:07:19 -06:00
Anthony Minessale 522c0d5325 FS-3675 --resolve 2011-11-09 10:07:54 -06:00
Anthony Minessale 43ca3ee81a FS-3634 the call is not bridged yet so we need to take more action, try this patch 2011-11-02 08:54:03 -05:00
Anthony Minessale bad5964b94 FS-3589 --resolve 2011-10-24 08:47:08 -05:00
Anthony Minessale d9b096b44d FS-3555 --resolve 2011-09-15 11:42:55 -05:00
Anthony Minessale 2e9724d2ec pass cancel_cause into enterprise_originate 2011-09-01 12:37:58 -05:00
Anthony Minessale c3ceebf0bf FS-3528 --resolve 2011-08-29 10:31:46 -05:00
Anthony Minessale 21482f011c FS-3521 --resolve that was not a git diff, anyway i would prefer to not feed null to this function by practice because its the sign o f a bigger problem so I added an assert so we can tell if it happens again and protected against it from where its actually happening because NULL destination is not acceptable 2011-08-25 08:46:40 -05:00
Anthony Minessale 329033ee86 FS-3506 --resolve 2011-08-25 08:27:23 -05:00
Jeff Lenk 605091609d FS-3515 remove duplicate code 2011-08-23 11:20:04 -05:00
Anthony Minessale d43af04e93 fix races in bypass media regarding channel signalling that may cause answer to be skipped 2011-08-19 16:25:32 -05:00
Anthony Minessale 850f2e3cff FS-3510 --resolve make all instances of execute_on_X uniform with api_on_X and support both prefix vars as before and usage of arrays to push several exexute_on or api_on records into one variable 2011-08-18 09:11:45 -05:00
Anthony Minessale 9d98d49f05 add emulation for asterisk DIALSTATUS magic var 2011-08-10 08:38:55 -05:00
Marc Olivier Chouinard 38e3f5fe16 switch_ivr_originate: export variables were broken since b946ee94 4 aug 2011 2011-08-09 03:09:19 -04:00
Anthony Minessale dee0f54026 FS-3483 --resolve 2011-08-04 09:50:23 -05:00
Anthony Minessale 2eae19e63f FS-3484 --resolve 2011-08-04 09:38:45 -05:00
Anthony Minessale b946ee94b2 update call_uuid stuff 2011-08-04 01:04:21 -05:00
Anthony Minessale f8c029a191 auto populate global origination_caller_id_name/number from effective_caller_id_name/number in enterprise originate 2011-06-29 15:57:59 -05:00
Anthony Minessale bf7895278e revert 2011-06-15 10:29:07 -05:00
Anthony Minessale 25604d60d5 FS-3326 revert 68c389d 2011-06-15 10:10:37 -05:00
Travis Cross f25085e06b lower log-level of failed ivr_originate
ivr_originate can fail due to causes such as NO_ANSWER and
ATTENDED_TRANSFER.  It seems excessive to log these normal events
with LOG_ERROR.  Lowering to LOG_NOTICE.
2011-06-06 17:54:17 +00:00
Anthony Minessale 68c389df46 FS-3326 --resolve ok thx 2011-06-03 09:45:07 -05:00
Anthony Minessale 7bbbb9ccc5 add vars: flip_record_on_hold to make the recording flip to the other leg on hold, record_check_bridge to make recording the same file on the opposite leg of a bridge considered a duplicate attempt and record_toggle_on_repeat to make repeat recording the same file toggle the recording off 2011-05-31 22:22:18 -05:00
Moises Silva ba76388cb2 fix missing ringback silence calculation spot in switch_ivr_originate 2011-05-26 02:23:34 -04:00
System Administrator 7eaef23955 Merge remote branch 'fsorig/master'
Conflicts:
	src/mod/applications/mod_commands/mod_commands.c
	src/mod/endpoints/mod_portaudio/mod_portaudio.c
	src/mod/endpoints/mod_portaudio/pablio.c
2011-05-26 00:13:12 -04:00
System Administrator 294a57fbcb allow -1 as silence generation divisor to specify only zeroes silence 2011-05-25 23:16:24 -04:00
Anthony Minessale fae95433e2 FS-3303 --resolve this was an edge case between fail_on_single_reject and group_confirm 2011-05-18 16:10:46 -05:00
Anthony Minessale 4c4bf59e45 FS-3246 --resolve all [] {} and <> can be stacked and override the delim per set <><^^:>{}{^^:}{^^;}[][^^:] 2011-04-14 17:50:48 -05:00
Anthony Minessale 27c6d1111c add execute_on function so you can have execute_on_answer_1 execute_on_answer_2 execute_on_answer_3 etc 2011-04-01 17:39:27 -05:00
Anthony Minessale 88a6ac2ff4 FS-3170 this was specific to the user channel which is not a real channel in every sense of the word as it has no running thread or any usable state changes so this new line of code in 233d3164be to wait for the state machine to stabalize before returning from originate caused an issue with user/ channels 2011-03-21 12:01:51 -05:00
Anthony Minessale 233d3164be wait 2011-03-13 18:43:34 -05:00
Anthony Minessale 24a972925b pass header in X-FS headers on attended transfer CID update to indicate specific situation to flip callee/caller id when targeting a 1 legged call 2011-03-11 13:00:55 -06:00
Mathieu Rene 8cb2bad004 Fix segv 2011-03-09 19:02:19 -05:00
Anthony Minessale 70700617d3 add execute_on_originate var '<app> <arg>' to run in origination thread or '<app>::<arg>' to run async. also originating_leg_uuid variable to show the uuid of the originating leg on an outbound channel 2011-01-20 13:52:00 -06:00
Anthony Minessale cc06fdb5fa FS-2992 2011-01-17 10:41:01 -06:00
Anthony Minessale 1b91f811bd more 2011-01-12 19:34:19 -06:00
Anthony Minessale 138fdc83c6 more from last commit 2011-01-12 18:06:01 -06:00
Anthony Minessale a10125b8c3 add origination_channel_name var for {} to choose the channel name value 2011-01-12 17:48:49 -06:00