error = PR_GetError(); if (!nsCertErrorNeedsDialog(error)) {  break; } if (!nsContinueDespiteCertError(infoObject, sslSocket,
if (!nsContinueDespiteCertError(infoObject, sslSocket,
nsNSSBadCertHandler(void *arg, PRFileDesc *sslSocket){  SECStatus rv = SECFailure;  int error;  nsNSSSocketInfo* infoObject = (nsNSSSocketInfo *)arg;  CERTCertificate *peerCert;  nsNSSCertificate *nssCert;  peerCert = SSL_PeerCertificate(sslSocket);  nssCert = new nsNSSCertificate(peerCert);  if (!nssCert) {    return SECFailure;  }   NS_ADDREF(nssCert);  while (rv != SECSuccess) {    error = PR_GetError();    if (!nsCertErrorNeedsDialog(error)) {      // Some weird error we don't really know how to handle.      break;    }    if (!nsContinueDespiteCertError(infoObject, sslSocket,                                     error, nssCert)) {      break;    }    rv = verifyCertAgain(peerCert, sslSocket, infoObject);  }  NS_RELEASE(nssCert);  CERT_DestroyCertificate(peerCert);   return rv;}