diff --git a/app/src/main/kotlin/com/tutpro/baresip/Account.kt b/app/src/main/kotlin/com/tutpro/baresip/Account.kt
index 4675f180..80eee037 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/Account.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/Account.kt
@@ -85,15 +85,14 @@ class Account(val accp: String) {
if (mediaNat != "") res = res + ";medianat=${mediaNat}"
- if (stunServer != "") {
- if (!stunServer.startsWith("stun") && !stunServer.startsWith("turn"))
- stunServer = "stun:$stunServer"
+ if (stunServer != "")
res += ";stunserver=\"${stunServer}\""
- }
- res += ";stunuser=\"${stunUser}\""
+ if (stunUser != "")
+ res += ";stunuser=\"${stunUser}\""
- if (stunPass != "") res += ";stunpass=\"${stunPass}\""
+ if (stunPass != "")
+ res += ";stunpass=\"${stunPass}\""
if (audioCodec.size > 0) {
var first = true
diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt
index 349bb880..080c217e 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt
@@ -95,6 +95,16 @@ class AccountActivity : AppCompatActivity() {
mediaNatSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
mediaNat = mediaNatKeys[mediaNatVals.indexOf(parent.selectedItem.toString())]
+ if ((mediaNat == "turn") && stunServer.text.startsWith("stun"))
+ stunServer.setText("")
+ else if ((mediaNat == "stun") &&
+ (stunServer.text.startsWith("turn") || (stunServer.text.toString() == "")))
+ stunServer.setText(resources.getString(R.string.stun_server_default))
+ else if (mediaNat == "") {
+ stunServer.setText("")
+ stunUser.setText("")
+ stunPass.setText("")
+ }
stunServer.isEnabled = mediaNat != ""
stunUser.isEnabled = mediaNat != ""
stunPass.isEnabled = mediaNat != ""
@@ -323,33 +333,32 @@ class AccountActivity : AppCompatActivity() {
}
}
+ var newStunServer = stunServer.text.toString().trim()
if (mediaNat != "") {
- var newStunServer = stunServer.text.toString().trim()
- if (newStunServer == "") {
- if (mediaNat.startsWith("turn")) {
- Utils.alertView(this, getString(R.string.notice),
- String.format(getString(R.string.invalid_stun_server), newStunServer))
- return false
- } else
- newStunServer = resources.getString(R.string.stun_server_default)
+ if (((mediaNat == "stun") || (mediaNat == "ice")) && (newStunServer == ""))
+ newStunServer = resources.getString(R.string.stun_server_default)
+ if (!Utils.checkStunUri(newStunServer) ||
+ ((mediaNat == "turn") && !newStunServer.startsWith("turn"))) {
+ Utils.alertView(this, getString(R.string.notice),
+ String.format(getString(R.string.invalid_stun_server), newStunServer))
+ return false
}
- if (acc.stunServer != newStunServer) {
- if (!Utils.checkStunUri(newStunServer)) {
- Utils.alertView(this, getString(R.string.notice),
- String.format(getString(R.string.invalid_stun_server), newStunServer))
- return false
- }
- if (account_set_stun_uri(acc.accp, newStunServer) == 0) {
- acc.stunServer = account_stun_uri(acc.accp)
- Log.d("Baresip", "New STUN/TURN server URI is '${acc.stunServer}'")
- save = true
- } else {
- Log.e("Baresip", "Setting of STUN/TURN URI server failed")
- }
+ }
+
+ if (acc.stunServer != newStunServer) {
+ if (account_set_stun_uri(acc.accp, newStunServer) == 0) {
+ acc.stunServer = account_stun_uri(acc.accp)
+ Log.d("Baresip", "New STUN/TURN server URI is '${acc.stunServer}'")
+ save = true
+ } else {
+ Log.e("Baresip", "Setting of STUN/TURN URI server failed")
}
- val su = stunUser.text.toString().trim()
- if (Account.checkAuthUser(su)) {
- if (account_set_stun_user(acc.accp, su) == 0) {
+ }
+
+ val newStunUser = stunUser.text.toString().trim()
+ if (acc.stunUser != newStunUser) {
+ if (Account.checkAuthUser(newStunUser)) {
+ if (account_set_stun_user(acc.accp, newStunUser) == 0) {
acc.stunUser = account_stun_user(acc.accp);
Log.d("Baresip", "New STUN/TURN user is ${acc.stunUser}")
save = true
@@ -357,13 +366,16 @@ class AccountActivity : AppCompatActivity() {
Log.e("Baresip", "Setting of STUN/TURN user failed")
}
} else {
- Utils.alertView(this, getString(R.string.notice),
- String.format(getString(R.string.invalid_stun_username), su))
+ Utils.alertView(this, getString(R.string.notice), String.format(getString(R.string.invalid_stun_username),
+ newStunUser))
return false
}
- val sp = stunPass.text.toString().trim()
- if (sp.isEmpty() || Account.checkAuthPass(sp)) {
- if (account_set_stun_pass(acc.accp, sp) == 0) {
+ }
+
+ val newStunPass = stunPass.text.toString().trim()
+ if (acc.stunPass != newStunPass) {
+ if (newStunPass.isEmpty() || Account.checkAuthPass(newStunPass)) {
+ if (account_set_stun_pass(acc.accp, newStunPass) == 0) {
acc.stunPass = account_stun_pass(acc.accp);
save = true
} else {
@@ -371,7 +383,7 @@ class AccountActivity : AppCompatActivity() {
}
} else {
Utils.alertView(this, getString(R.string.notice),
- String.format(getString(R.string.invalid_stun_password), sp))
+ String.format(getString(R.string.invalid_stun_password), newStunPass))
return false
}
}
diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml
index e906fdd0..dd7a4205 100644
--- a/app/src/main/res/layout/activity_account.xml
+++ b/app/src/main/res/layout/activity_account.xml
@@ -211,11 +211,9 @@
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:textSize="18sp"
- android:paddingTop="0dp"
- android:paddingStart="10dp"
- android:paddingEnd="0dp"
android:scrollHorizontally="true"
android:importantForAutofill="no"
+ android:hint="@string/stun_server_uri"
android:inputType="textEmailAddress" >
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index faf7d411..d3d5268c 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -131,10 +131,11 @@
STUN/TURN-palvelin
STUN/TURN-palvelimen muotoa \'kaava:palvelin[:portti]\'
- oleva osoite, missä kaava on \'stun\', \'stuns\', \'turn\' tai \'turns\'. STUN-palvelimen
+ oleva URI, missä kaava on \'stun\', \'stuns\', \'turn\' tai \'turns\'. STUN-palvelimen
oletusarvo \'stun:stun.l.google.com:19302\', joka osoittaa Google:n julkiseen STUN-palvelimeen.
TURN-palvelimella ei ole oletusarvoa.
+ STUN/TURN-palvelimen URI
Virheellinen STUN/TURN-palvelimen URI \'%1$s\'
STUN/TURN-käyttäjätunnus
Käyttäjätunnus jos STUN/TURN-palvelin vaatii sellaisen
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a25f7d93..70d01214 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -130,6 +130,7 @@
\'stun:stun.l.google.com:19302\', pointing to public Google STUN server. There is no
factory default TURN server.
+ STUN/TURN Server URI
Invalid STUN/TURN Server URI \'%1$s\'
stun:stun.l.google.com:19302
STUN/TURN Username