SIP: add DisconnectCause.SERVER_ERROR
and fix how SipErrorCode.SERVER_ERROR is determinted from server response, not from local exceptions. http://b/issue?id=3041332 Change-Id: Idce67e29858d5c7573b98b7fa1fac074913d71d6
This commit is contained in:
@ -42,6 +42,7 @@ public abstract class Connection {
|
|||||||
NUMBER_UNREACHABLE, /* cannot reach the peer */
|
NUMBER_UNREACHABLE, /* cannot reach the peer */
|
||||||
INVALID_CREDENTIALS, /* invalid credentials */
|
INVALID_CREDENTIALS, /* invalid credentials */
|
||||||
OUT_OF_NETWORK, /* calling from out of network is not allowed */
|
OUT_OF_NETWORK, /* calling from out of network is not allowed */
|
||||||
|
SERVER_ERROR, /* server error */
|
||||||
TIMED_OUT, /* client timed out */
|
TIMED_OUT, /* client timed out */
|
||||||
LOST_SIGNAL,
|
LOST_SIGNAL,
|
||||||
LIMIT_EXCEEDED, /* eg GSM ACM limit exceeded */
|
LIMIT_EXCEEDED, /* eg GSM ACM limit exceeded */
|
||||||
|
@ -883,8 +883,10 @@ public class SipPhone extends SipPhoneBase {
|
|||||||
case SipErrorCode.CROSS_DOMAIN_AUTHENTICATION:
|
case SipErrorCode.CROSS_DOMAIN_AUTHENTICATION:
|
||||||
onError(Connection.DisconnectCause.OUT_OF_NETWORK);
|
onError(Connection.DisconnectCause.OUT_OF_NETWORK);
|
||||||
break;
|
break;
|
||||||
case SipErrorCode.SOCKET_ERROR:
|
|
||||||
case SipErrorCode.SERVER_ERROR:
|
case SipErrorCode.SERVER_ERROR:
|
||||||
|
onError(Connection.DisconnectCause.SERVER_ERROR);
|
||||||
|
break;
|
||||||
|
case SipErrorCode.SOCKET_ERROR:
|
||||||
case SipErrorCode.CLIENT_ERROR:
|
case SipErrorCode.CLIENT_ERROR:
|
||||||
default:
|
default:
|
||||||
Log.w(LOG_TAG, "error: " + SipErrorCode.toString(errorCode)
|
Log.w(LOG_TAG, "error: " + SipErrorCode.toString(errorCode)
|
||||||
|
@ -82,7 +82,6 @@ class SipSessionGroup implements SipListener {
|
|||||||
private static final boolean DEBUG = true;
|
private static final boolean DEBUG = true;
|
||||||
private static final boolean DEBUG_PING = DEBUG && false;
|
private static final boolean DEBUG_PING = DEBUG && false;
|
||||||
private static final String ANONYMOUS = "anonymous";
|
private static final String ANONYMOUS = "anonymous";
|
||||||
private static final String SERVER_ERROR_PREFIX = "Response: ";
|
|
||||||
private static final int EXPIRY_TIME = 3600; // in seconds
|
private static final int EXPIRY_TIME = 3600; // in seconds
|
||||||
private static final int CANCEL_CALL_TIMER = 3; // in seconds
|
private static final int CANCEL_CALL_TIMER = 3; // in seconds
|
||||||
|
|
||||||
@ -1099,8 +1098,8 @@ class SipSessionGroup implements SipListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String createErrorMessage(Response response) {
|
private String createErrorMessage(Response response) {
|
||||||
return String.format(SERVER_ERROR_PREFIX + "%s (%d)",
|
return String.format("%s (%d)", response.getReasonPhrase(),
|
||||||
response.getReasonPhrase(), response.getStatusCode());
|
response.getStatusCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void establishCall() {
|
private void establishCall() {
|
||||||
@ -1204,8 +1203,6 @@ class SipSessionGroup implements SipListener {
|
|||||||
return SipErrorCode.INVALID_REMOTE_URI;
|
return SipErrorCode.INVALID_REMOTE_URI;
|
||||||
} else if (exception instanceof IOException) {
|
} else if (exception instanceof IOException) {
|
||||||
return SipErrorCode.SOCKET_ERROR;
|
return SipErrorCode.SOCKET_ERROR;
|
||||||
} else if (message.startsWith(SERVER_ERROR_PREFIX)) {
|
|
||||||
return SipErrorCode.SERVER_ERROR;
|
|
||||||
} else {
|
} else {
|
||||||
return SipErrorCode.CLIENT_ERROR;
|
return SipErrorCode.CLIENT_ERROR;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user