mozilla-nss-compat.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Tue, 21 Feb 2012 16:36:37 +0100
changeset 395 492d540dd2ac
parent 391 5425f43ef15c
permissions -rw-r--r--
explicitely require xorg-x11-devel
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
391
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
# HG changeset patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
# Parent f241f48841a5d480f898cb7c34f3438aaa9a6c40
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     3
# User Brian Smith <bsmith@mozilla.com>
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
Bug 713934, Part 2, version 1: Update SetCertVerificationResult to use SSL_AuthCertificateComplete, r?honzab
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
diff --git a/security/manager/ssl/src/nsNSSIOLayer.cpp b/security/manager/ssl/src/nsNSSIOLayer.cpp
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
--- a/security/manager/ssl/src/nsNSSIOLayer.cpp
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
+++ b/security/manager/ssl/src/nsNSSIOLayer.cpp
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
@@ -964,31 +964,31 @@ nsNSSSocketInfo::SetCertVerificationWait
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
 void
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
 nsNSSSocketInfo::SetCertVerificationResult(PRErrorCode errorCode,
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
                                            SSLErrorMessageType errorMessageType)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
 {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
   NS_ASSERTION(mCertVerificationState == waiting_for_cert_verification,
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
                "Invalid state transition to cert_verification_finished");
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
-  if (errorCode != 0) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
-    SetCanceled(errorCode, errorMessageType);
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
-  } else if (mFd) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
-    // We haven't closed the connection already, so restart it
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
-    SECStatus rv = SSL_RestartHandshakeAfterAuthCertificate(mFd);
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
-    if (rv != SECSuccess) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
+  if (mFd) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
+    SECStatus rv = SSL_AuthCertificateComplete(mFd, errorCode);
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
+    // Only replace errorCode if there was originally no error
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
+    if (rv != SECSuccess && errorCode == 0) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
       errorCode = PR_GetError();
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
+      errorMessageType = PlainErrorMessage;
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
       if (errorCode == 0) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
-        NS_ERROR("SSL_RestartHandshakeAfterAuthCertificate didn't set error code");
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
+        NS_ERROR("SSL_AuthCertificateComplete didn't set error code");
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
         errorCode = PR_INVALID_STATE_ERROR;
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
       }
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
-      SetCanceled(errorCode, PlainErrorMessage);
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
     }
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    37
-  } else {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    38
-    // If we closed the connection alreay, we don't have anything to do
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    39
+  }
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
+
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    41
+  if (errorCode) {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    42
+    SetCanceled(errorCode, errorMessageType);
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    43
   }
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    44
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    45
   mCertVerificationState = after_cert_verification;
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    46
 }
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    47
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
 nsresult nsNSSSocketInfo::GetSSLStatus(nsISSLStatus** _result)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    49
 {
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    50
   NS_ENSURE_ARG_POINTER(_result);