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