| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/websockets/websocket_basic_handshake_stream.h" | 5 #include "net/websockets/websocket_basic_handshake_stream.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iterator> | 8 #include <iterator> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 return ValidateUpgradeResponse(headers); | 558 return ValidateUpgradeResponse(headers); |
| 559 | 559 |
| 560 // We need to pass these through for authentication to work. | 560 // We need to pass these through for authentication to work. |
| 561 case HTTP_UNAUTHORIZED: | 561 case HTTP_UNAUTHORIZED: |
| 562 case HTTP_PROXY_AUTHENTICATION_REQUIRED: | 562 case HTTP_PROXY_AUTHENTICATION_REQUIRED: |
| 563 return OK; | 563 return OK; |
| 564 | 564 |
| 565 // Other status codes are potentially risky (see the warnings in the | 565 // Other status codes are potentially risky (see the warnings in the |
| 566 // WHATWG WebSocket API spec) and so are dropped by default. | 566 // WHATWG WebSocket API spec) and so are dropped by default. |
| 567 default: | 567 default: |
| 568 failure_message_ = base::StringPrintf( | 568 // A WebSocket server cannot be using HTTP/0.9, so if we see version |
| 569 "Error during WebSocket handshake: Unexpected response code: %d", | 569 // 0.9, it means the response was garbage. |
| 570 headers->response_code()); | 570 // Reporting "Unexpected response code: 200" in this case is not |
| 571 // helpful, so use a different error message. |
| 572 if (headers->GetHttpVersion() == HttpVersion(0, 9)) { |
| 573 failure_message_ = |
| 574 "Error during WebSocket handshake: Invalid status line"; |
| 575 } else { |
| 576 failure_message_ = base::StringPrintf( |
| 577 "Error during WebSocket handshake: Unexpected response code: %d", |
| 578 headers->response_code()); |
| 579 } |
| 571 OnFinishOpeningHandshake(); | 580 OnFinishOpeningHandshake(); |
| 572 return ERR_INVALID_RESPONSE; | 581 return ERR_INVALID_RESPONSE; |
| 573 } | 582 } |
| 574 } else { | 583 } else { |
| 575 if (rv == ERR_EMPTY_RESPONSE) { | 584 if (rv == ERR_EMPTY_RESPONSE) { |
| 576 failure_message_ = | 585 failure_message_ = |
| 577 "Connection closed before receiving a handshake response"; | 586 "Connection closed before receiving a handshake response"; |
| 578 return rv; | 587 return rv; |
| 579 } | 588 } |
| 580 failure_message_ = | 589 failure_message_ = |
| (...skipping 20 matching lines...) Expand all Loading... |
| 601 &extensions_, | 610 &extensions_, |
| 602 &failure_message_, | 611 &failure_message_, |
| 603 extension_params_.get())) { | 612 extension_params_.get())) { |
| 604 return OK; | 613 return OK; |
| 605 } | 614 } |
| 606 failure_message_ = "Error during WebSocket handshake: " + failure_message_; | 615 failure_message_ = "Error during WebSocket handshake: " + failure_message_; |
| 607 return ERR_INVALID_RESPONSE; | 616 return ERR_INVALID_RESPONSE; |
| 608 } | 617 } |
| 609 | 618 |
| 610 } // namespace net | 619 } // namespace net |
| OLD | NEW |