Index: net/third_party/nss/ssl/ssl3con.c |
diff --git a/net/third_party/nss/ssl/ssl3con.c b/net/third_party/nss/ssl/ssl3con.c |
index 9dbf3996525d3232ee2f1fc2cef3ac99952282b0..c46299e7175065a16f25c3ce5fef01e6f3a05628 100644 |
--- a/net/third_party/nss/ssl/ssl3con.c |
+++ b/net/third_party/nss/ssl/ssl3con.c |
@@ -5899,9 +5899,13 @@ ssl3_HandleServerHelloDone(sslSocket *ss) |
goto loser; /* err code was set. */ |
} |
- rv = ssl3_SendNextProto(ss); |
- if (rv != SECSuccess) { |
- goto loser; /* err code was set. */ |
+ /* We don't send NPN in a renegotiation as it's explicitly disallowed by |
+ * the spec. */ |
+ if (!ss->firstHsDone) { |
+ rv = ssl3_SendNextProto(ss); |
+ if (rv != SECSuccess) { |
+ goto loser; /* err code was set. */ |
+ } |
} |
rv = ssl3_SendFinished(ss, 0); |
@@ -8836,7 +8840,7 @@ ssl3_HandleFinished(sslSocket *ss, SSL3Opaque *b, PRUint32 length, |
flags = ssl_SEND_FLAG_FORCE_INTO_BUFFER; |
} |
- if (!isServer) { |
+ if (!isServer && !ss->firstHsDone) { |
rv = ssl3_SendNextProto(ss); |
if (rv != SECSuccess) { |
goto xmit_loser; /* err code was set. */ |