Merge "SipService: send SERVER_ERROR if server doesn't provide nonce" into gingerbread
diff --git a/services/java/com/android/server/sip/SipSessionGroup.java b/services/java/com/android/server/sip/SipSessionGroup.java
index 06b6ec9..3d002aa 100644
--- a/services/java/com/android/server/sip/SipSessionGroup.java
+++ b/services/java/com/android/server/sip/SipSessionGroup.java
@@ -712,9 +712,15 @@
                 case Response.UNAUTHORIZED:
                 case Response.PROXY_AUTHENTICATION_REQUIRED:
                     if (!handleAuthentication(event)) {
-                        Log.v(TAG, "Incorrect username/password");
-                        onRegistrationFailed(SipErrorCode.INVALID_CREDENTIALS,
-                                "incorrect username or password");
+                        if (mLastNonce == null) {
+                            onRegistrationFailed(SipErrorCode.SERVER_ERROR,
+                                    "server does not provide challenge");
+                        } else {
+                            Log.v(TAG, "Incorrect username/password");
+                            onRegistrationFailed(
+                                    SipErrorCode.INVALID_CREDENTIALS,
+                                    "incorrect username or password");
+                        }
                     }
                     return true;
                 default:
@@ -869,6 +875,9 @@
                 case Response.PROXY_AUTHENTICATION_REQUIRED:
                     if (handleAuthentication(event)) {
                         addSipSession(this);
+                    } else if (mLastNonce == null) {
+                        endCallOnError(SipErrorCode.SERVER_ERROR,
+                                "server does not provide challenge");
                     } else {
                         endCallOnError(SipErrorCode.INVALID_CREDENTIALS,
                                 "incorrect username or password");