am 5306e0a8: Merge "SIP: add PEER_NOT_REACHABLE error feedback." into gingerbread
Merge commit '5306e0a85dabd4c18a7b3f81acc0f582f9429482' into gingerbread-plus-aosp * commit '5306e0a85dabd4c18a7b3f81acc0f582f9429482': SIP: add PEER_NOT_REACHABLE error feedback.
This commit is contained in:
@@ -1036,8 +1036,7 @@ class SipSessionGroup implements SipListener {
|
|||||||
|
|
||||||
private void onError(Response response) {
|
private void onError(Response response) {
|
||||||
int statusCode = response.getStatusCode();
|
int statusCode = response.getStatusCode();
|
||||||
if (!mInCall && ((statusCode == Response.TEMPORARILY_UNAVAILABLE)
|
if (!mInCall && (statusCode == Response.BUSY_HERE)) {
|
||||||
|| (statusCode == Response.BUSY_HERE))) {
|
|
||||||
endCallOnBusy();
|
endCallOnBusy();
|
||||||
} else {
|
} else {
|
||||||
onError(getErrorCode(statusCode), createErrorMessage(response));
|
onError(getErrorCode(statusCode), createErrorMessage(response));
|
||||||
@@ -1046,11 +1045,22 @@ class SipSessionGroup implements SipListener {
|
|||||||
|
|
||||||
private SipErrorCode getErrorCode(int responseStatusCode) {
|
private SipErrorCode getErrorCode(int responseStatusCode) {
|
||||||
switch (responseStatusCode) {
|
switch (responseStatusCode) {
|
||||||
|
case Response.TEMPORARILY_UNAVAILABLE:
|
||||||
|
case Response.FORBIDDEN:
|
||||||
|
case Response.GONE:
|
||||||
case Response.NOT_FOUND:
|
case Response.NOT_FOUND:
|
||||||
|
case Response.NOT_ACCEPTABLE:
|
||||||
|
case Response.NOT_ACCEPTABLE_HERE:
|
||||||
|
return SipErrorCode.PEER_NOT_REACHABLE;
|
||||||
|
|
||||||
|
case Response.REQUEST_URI_TOO_LONG:
|
||||||
case Response.ADDRESS_INCOMPLETE:
|
case Response.ADDRESS_INCOMPLETE:
|
||||||
|
case Response.AMBIGUOUS:
|
||||||
return SipErrorCode.INVALID_REMOTE_URI;
|
return SipErrorCode.INVALID_REMOTE_URI;
|
||||||
|
|
||||||
case Response.REQUEST_TIMEOUT:
|
case Response.REQUEST_TIMEOUT:
|
||||||
return SipErrorCode.TIME_OUT;
|
return SipErrorCode.TIME_OUT;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (responseStatusCode < 500) {
|
if (responseStatusCode < 500) {
|
||||||
return SipErrorCode.CLIENT_ERROR;
|
return SipErrorCode.CLIENT_ERROR;
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ public abstract class Connection {
|
|||||||
CONGESTION, /* outgoing call to congested network */
|
CONGESTION, /* outgoing call to congested network */
|
||||||
MMI, /* not presently used; dial() returns null */
|
MMI, /* not presently used; dial() returns null */
|
||||||
INVALID_NUMBER, /* invalid dial string */
|
INVALID_NUMBER, /* invalid dial string */
|
||||||
|
NUMBER_UNREACHABLE, /* cannot reach the peer */
|
||||||
INVALID_CREDENTIALS, /* invalid credentials */
|
INVALID_CREDENTIALS, /* invalid credentials */
|
||||||
TIMED_OUT, /* client timed out */
|
TIMED_OUT, /* client timed out */
|
||||||
LOST_SIGNAL,
|
LOST_SIGNAL,
|
||||||
|
|||||||
@@ -606,6 +606,7 @@ public class SipPhone extends SipPhoneBase {
|
|||||||
}
|
}
|
||||||
synchronized (SipPhone.class) {
|
synchronized (SipPhone.class) {
|
||||||
setState(Call.State.DISCONNECTED);
|
setState(Call.State.DISCONNECTED);
|
||||||
|
mSipAudioCall.close();
|
||||||
mOwner.onConnectionEnded(SipConnection.this);
|
mOwner.onConnectionEnded(SipConnection.this);
|
||||||
Log.v(LOG_TAG, "-------- connection ended: "
|
Log.v(LOG_TAG, "-------- connection ended: "
|
||||||
+ mPeer.getUriString() + ": "
|
+ mPeer.getUriString() + ": "
|
||||||
@@ -822,6 +823,9 @@ public class SipPhone extends SipPhoneBase {
|
|||||||
public void onError(SipAudioCall call, SipErrorCode errorCode,
|
public void onError(SipAudioCall call, SipErrorCode errorCode,
|
||||||
String errorMessage) {
|
String errorMessage) {
|
||||||
switch (errorCode) {
|
switch (errorCode) {
|
||||||
|
case PEER_NOT_REACHABLE:
|
||||||
|
onError(Connection.DisconnectCause.NUMBER_UNREACHABLE);
|
||||||
|
break;
|
||||||
case INVALID_REMOTE_URI:
|
case INVALID_REMOTE_URI:
|
||||||
onError(Connection.DisconnectCause.INVALID_NUMBER);
|
onError(Connection.DisconnectCause.INVALID_NUMBER);
|
||||||
break;
|
break;
|
||||||
@@ -839,6 +843,7 @@ public class SipPhone extends SipPhoneBase {
|
|||||||
case SERVER_ERROR:
|
case SERVER_ERROR:
|
||||||
case CLIENT_ERROR:
|
case CLIENT_ERROR:
|
||||||
default:
|
default:
|
||||||
|
Log.w(LOG_TAG, "error: " + errorCode + ": " + errorMessage);
|
||||||
onError(Connection.DisconnectCause.ERROR_UNSPECIFIED);
|
onError(Connection.DisconnectCause.ERROR_UNSPECIFIED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ public enum SipErrorCode {
|
|||||||
/** When the remote URI is not valid. */
|
/** When the remote URI is not valid. */
|
||||||
INVALID_REMOTE_URI,
|
INVALID_REMOTE_URI,
|
||||||
|
|
||||||
|
/** When the peer is not reachable. */
|
||||||
|
PEER_NOT_REACHABLE,
|
||||||
|
|
||||||
/** When invalid credentials are provided. */
|
/** When invalid credentials are provided. */
|
||||||
INVALID_CREDENTIALS,
|
INVALID_CREDENTIALS,
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user