diff options
author | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-14 05:52:12 +0000 |
---|---|---|
committer | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-14 05:52:12 +0000 |
commit | 9885a10cfe5569c9c15e5a123cd94ee24cceaf39 (patch) | |
tree | 6176f967588e2a34cf528b327dec2218a77b79bb /ppapi | |
parent | 3fd3cf7d3474d5bd2df4f8bd8585bba36f975120 (diff) | |
download | chromium_src-9885a10cfe5569c9c15e5a123cd94ee24cceaf39.zip chromium_src-9885a10cfe5569c9c15e5a123cd94ee24cceaf39.tar.gz chromium_src-9885a10cfe5569c9c15e5a123cd94ee24cceaf39.tar.bz2 |
WebSocket Pepper API: PPB_WebSocket crashes when server close the connection.
PPB_WebSocket might crash when server intiates closing handshake.
- close_callback_ could have no pointer in CLOSING state
- On going ReceiveMessage must be done with PP_ERROR_FAILED
BUG=127756
TEST=browser_tests --gtest_filter='PPAPI*Test_WebSocket_ValidClose'
Review URL: https://chromiumcodereview.appspot.com/10378106
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136832 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/tests/test_websocket.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ppapi/tests/test_websocket.cc b/ppapi/tests/test_websocket.cc index 11a4260..93ce956 100644 --- a/ppapi/tests/test_websocket.cc +++ b/ppapi/tests/test_websocket.cc @@ -38,6 +38,9 @@ const char kEchoServerURL[] = "websocket/tests/hybi/echo-with-no-extension"; const char kCloseServerURL[] = "websocket/tests/hybi/close"; +const char kCloseWithCodeAndReasonServerURL[] = + "websocket/tests/hybi/close-code-and-reason"; + const char kProtocolTestServerURL[] = "websocket/tests/hybi/protocol-test?protocol="; @@ -634,6 +637,21 @@ std::string TestWebSocket::TestValidClose() { ASSERT_EQ(PP_OK, result); core_interface_->ReleaseResource(ws); + // Server initiated closing handshake. + ws = Connect(GetFullURL(kCloseWithCodeAndReasonServerURL), &result, ""); + ASSERT_TRUE(ws); + ASSERT_EQ(PP_OK, result); + // Text messsage "1000 bye" requests the server to initiate closing handshake + // with code being 1000 and reason being "bye". + PP_Var close_request_var = CreateVarString("1000 bye"); + result = websocket_interface_->SendMessage(ws, close_request_var); + ReleaseVar(close_request_var); + callback.WaitForResult(websocket_interface_->ReceiveMessage( + ws, &receive_message_var, + callback.GetCallback().pp_completion_callback())); + ASSERT_EQ(PP_ERROR_FAILED, callback.result()); + core_interface_->ReleaseResource(ws); + ReleaseVar(reason); ReleaseVar(url); |