diff --git a/net/server/internal/api_addCall.go b/net/server/internal/api_addCall.go index 34c3f1f2..24e4a227 100644 --- a/net/server/internal/api_addCall.go +++ b/net/server/internal/api_addCall.go @@ -69,6 +69,8 @@ func AddCall(w http.ResponseWriter, r *http.Request) { calleeToken := hex.EncodeToString(calleeBin); bridgeRelay.AddBridge(account.ID, callId, cardId, callerToken, calleeToken); + turn := getDefaultIce(ice); + // create response call := Call{ Id: callId, @@ -77,10 +79,11 @@ func AddCall(w http.ResponseWriter, r *http.Request) { CalleeToken: calleeToken, Ice: ice, IceService: iceService, - IceURL: ice[len(ice)-1].URLs, - IceUsername: ice[len(ice)-1].Username, - IcePassword: ice[len(ice)-1].Credential, + IceURL: turn.URLs, + IceUsername: turn.Username, + IcePassword: turn.Credential, KeepAlive: BridgeKeepAlive, } + WriteResponse(w, call); } diff --git a/net/server/internal/iceUtil.go b/net/server/internal/iceUtil.go index e54a056a..f1026b87 100644 --- a/net/server/internal/iceUtil.go +++ b/net/server/internal/iceUtil.go @@ -5,6 +5,7 @@ import ( "net/http" "errors" "bytes" + "strings" ) func getIce(service bool, urls string, username string, credential string) ([]IceURL, error) { @@ -45,3 +46,12 @@ func getIce(service bool, urls string, username string, credential string) ([]Ic }, nil } +func getDefaultIce(ice []IceURL) IceURL, error { + for _, url := range ice { + if strings.HasSuffix(url.URLs, "?transport=udp") { + return url + } + } + return ice[0]; +} +