firefox-sync-system-nss.patch
changeset 191 14282ac75832
parent 190 36e368eff6f7
child 192 bb4213ee70c8
equal deleted inserted replaced
190:36e368eff6f7 191:14282ac75832
     1 # HG changeset patch
       
     2 # Parent 1e4f0a7028202f758195452878b0299a587a4b4e
       
     3 Bug 583209 - Weave fails to load if system libnss3.so is in use (OpenSolaris, Linux dists)
       
     4 https://bugzilla.mozilla.org/show_bug.cgi?id=583209
       
     5 
       
     6 diff --git a/services/crypto/WeaveCrypto.js b/services/crypto/WeaveCrypto.js
       
     7 --- a/services/crypto/WeaveCrypto.js
       
     8 +++ b/services/crypto/WeaveCrypto.js
       
     9 @@ -102,44 +102,23 @@ WeaveCrypto.prototype = {
       
    10      initNSS : function() {
       
    11          // We use NSS for the crypto ops, which needs to be initialized before
       
    12          // use. By convention, PSM is required to be the module that
       
    13          // initializes NSS. So, make sure PSM is initialized in order to
       
    14          // implicitly initialize NSS.
       
    15          Cc["@mozilla.org/psm;1"].getService(Ci.nsISupports);
       
    16  
       
    17          // Open the NSS library.
       
    18 -        let nssfile = Services.dirsvc.get("GreD", Ci.nsILocalFile);
       
    19          let os = Services.appinfo.OS;
       
    20 -        switch (os) {
       
    21 -          case "WINNT":
       
    22 -          case "WINMO":
       
    23 -          case "WINCE":
       
    24 -            nssfile.append("nss3.dll");
       
    25 -            break;
       
    26 -          case "Darwin":
       
    27 -            nssfile.append("libnss3.dylib");
       
    28 -            break;
       
    29 -          case "Linux":
       
    30 -          case "SunOS":
       
    31 -          case "WebOS": // Palm Pre
       
    32 -            nssfile.append("libnss3.so");
       
    33 -            break;
       
    34 -          case "Android":
       
    35 -            // Android uses a $GREDIR/lib/ subdir.
       
    36 -            nssfile.append("lib");
       
    37 -            nssfile.append("libnss3.so");
       
    38 -            break;
       
    39 -          default:
       
    40 -            throw Components.Exception("unsupported platform: " + os, Cr.NS_ERROR_UNEXPECTED);
       
    41 -        }
       
    42 -        this.log("Using NSS library " + nssfile.path);
       
    43 +        let path = ctypes.libraryName("nss3");
       
    44 +
       
    45 +        this.log("Using NSS library " + path);
       
    46  
       
    47          // XXX really want to be able to pass specific dlopen flags here.
       
    48 -        let nsslib = ctypes.open(nssfile.path);
       
    49 +        let nsslib = ctypes.open(path);
       
    50  
       
    51          this.log("Initializing NSS types and function declarations...");
       
    52  
       
    53          this.nss = {};
       
    54          this.nss_t = {};
       
    55  
       
    56          // nsprpub/pr/include/prtypes.h#435
       
    57          // typedef PRIntn PRBool; --> int