(ss->requireCertificate == SSL_REQUIRE_FIRST_HANDSHAKE))) {
(ss->opt.requireCertificate == SSL_REQUIRE_FIRST_HANDSHAKE))) {
ssl3_HandleNoCertificate(sslSocket *ss){    if (ss->sec.peerCert != NULL) {	if (ss->sec.peerKey != NULL) {	    SECKEY_DestroyPublicKey(ss->sec.peerKey);	    ss->sec.peerKey = NULL;	}	CERT_DestroyCertificate(ss->sec.peerCert);	ss->sec.peerCert = NULL;    }    ssl3_CleanupPeerCerts(ss->ssl3);    /* If the server has required client-auth blindly but doesn't     * actually look at the certificate it won't know that no     * certificate was presented so we shutdown the socket to ensure     * an error.  We only do this if we haven't already completed the     * first handshake because if we're redoing the handshake we      * know the server is paying attention to the certificate.     */    if ((ss->requireCertificate == SSL_REQUIRE_ALWAYS) ||	(!ss->firstHsDone && 	 (ss->requireCertificate == SSL_REQUIRE_FIRST_HANDSHAKE))) {	PRFileDesc * lower;	ss->sec.uncache(ss->sec.ci.sid);	SSL3_SendAlert(ss, alert_fatal, bad_certificate);	lower = ss->fd->lower;#ifdef _WIN32	lower->methods->shutdown(lower, PR_SHUTDOWN_SEND);#else	lower->methods->shutdown(lower, PR_SHUTDOWN_BOTH);#endif	PORT_SetError(SSL_ERROR_NO_CERTIFICATE);	return SECFailure;    }    return SECSuccess;}