cwSpec = ss->ssl3->cwSpec;
cwSpec = ss->ssl3.cwSpec;
ssl3_SendFinished(sslSocket *ss, PRInt32 flags){    ssl3CipherSpec *cwSpec;    PRBool          isTLS;    PRBool          isServer = ss->sec.isServer;    SECStatus       rv;    SSL3Sender      sender = isServer ? sender_server : sender_client;    SSL3Finished    hashes;    TLSFinished     tlsFinished;    SSL_TRC(3, ("%d: SSL3[%d]: send finished handshake", SSL_GETPID(), ss->fd));    PORT_Assert( ssl_HaveXmitBufLock(ss));    PORT_Assert( ssl_HaveSSL3HandshakeLock(ss));    ssl_GetSpecReadLock(ss);    cwSpec = ss->ssl3->cwSpec;    isTLS = (PRBool)(cwSpec->version > SSL_LIBRARY_VERSION_3_0);    rv = ssl3_ComputeHandshakeHashes(ss, cwSpec, &hashes, sender);    if (isTLS && rv == SECSuccess) {	rv = ssl3_ComputeTLSFinished(cwSpec, isServer, &hashes, &tlsFinished);    }    ssl_ReleaseSpecReadLock(ss);    if (rv != SECSuccess) {	goto fail;	/* err code was set by ssl3_ComputeHandshakeHashes */    }    if (isTLS) {	rv = ssl3_AppendHandshakeHeader(ss, finished, sizeof tlsFinished);	if (rv != SECSuccess) 	    goto fail; 		/* err set by AppendHandshake. */	rv = ssl3_AppendHandshake(ss, &tlsFinished, sizeof tlsFinished);	if (rv != SECSuccess) 	    goto fail; 		/* err set by AppendHandshake. */    } else {	rv = ssl3_AppendHandshakeHeader(ss, finished, sizeof hashes);	if (rv != SECSuccess) 	    goto fail; 		/* err set by AppendHandshake. */	rv = ssl3_AppendHandshake(ss, &hashes, sizeof hashes);	if (rv != SECSuccess) 	    goto fail; 		/* err set by AppendHandshake. */    }    rv = ssl3_FlushHandshake(ss, flags);    if (rv != SECSuccess) {	goto fail;	/* error code set by ssl3_FlushHandshake */    }    return SECSuccess;fail:    return rv;}