| Index: net/third_party/nss/ssl/ssl3gthr.c
|
| ===================================================================
|
| --- net/third_party/nss/ssl/ssl3gthr.c (revision 242942)
|
| +++ net/third_party/nss/ssl/ssl3gthr.c (working copy)
|
| @@ -325,6 +325,12 @@
|
| rv = ssl3_HandleRecord(ss, NULL, &ss->gs.buf);
|
| } else {
|
| /* bring in the next sslv3 record. */
|
| + if (ss->recvdCloseNotify) {
|
| + /* RFC 5246 Section 7.2.1:
|
| + * Any data received after a closure alert is ignored.
|
| + */
|
| + return 0;
|
| + }
|
| if (!IS_DTLS(ss)) {
|
| rv = ssl3_GatherData(ss, &ss->gs, flags);
|
| } else {
|
| @@ -370,20 +376,19 @@
|
|
|
| cText.buf = &ss->gs.inbuf;
|
| rv = ssl3_HandleRecord(ss, &cText, &ss->gs.buf);
|
| -
|
| - if (rv == (int) SECSuccess && ss->gs.buf.len > 0) {
|
| - /* We have application data to return to the application. This
|
| - * prioritizes returning application data to the application over
|
| - * completing any renegotiation handshake we may be doing.
|
| - */
|
| - PORT_Assert(ss->firstHsDone);
|
| - PORT_Assert(cText.type == content_application_data);
|
| - break;
|
| - }
|
| }
|
| if (rv < 0) {
|
| return ss->recvdCloseNotify ? 0 : rv;
|
| }
|
| + if (ss->gs.buf.len > 0) {
|
| + /* We have application data to return to the application. This
|
| + * prioritizes returning application data to the application over
|
| + * completing any renegotiation handshake we may be doing.
|
| + */
|
| + PORT_Assert(ss->firstHsDone);
|
| + PORT_Assert(cText.type == content_application_data);
|
| + break;
|
| + }
|
|
|
| PORT_Assert(keepGoing);
|
| ssl_GetSSL3HandshakeLock(ss);
|
|
|