diff --git a/tee-worker/core/tls-websocket-server/src/connection.rs b/tee-worker/core/tls-websocket-server/src/connection.rs index b02af8e80f..10266f9b57 100644 --- a/tee-worker/core/tls-websocket-server/src/connection.rs +++ b/tee-worker/core/tls-websocket-server/src/connection.rs @@ -94,6 +94,7 @@ where match tls_session.process_new_packets() { Ok(_) => { if tls_session.is_handshaking() { + trace!("TLS session is in handshake"); return ConnectionState::TlsHandshake } ConnectionState::Alive diff --git a/tee-worker/core/tls-websocket-server/src/lib.rs b/tee-worker/core/tls-websocket-server/src/lib.rs index 66bb8fcfa7..d50b312b28 100644 --- a/tee-worker/core/tls-websocket-server/src/lib.rs +++ b/tee-worker/core/tls-websocket-server/src/lib.rs @@ -153,4 +153,14 @@ pub(crate) trait WebSocketConnection: Send + Sync { None => Err(WebSocketError::ConnectionClosed), } } + + fn deregister(&mut self, poll: &mio::Poll) -> WebSocketResult<()> { + match self.socket() { + Some(s) => { + poll.deregister(s)?; + Ok(()) + }, + None => Err(WebSocketError::ConnectionClosed), + } + } } diff --git a/tee-worker/core/tls-websocket-server/src/stream_state.rs b/tee-worker/core/tls-websocket-server/src/stream_state.rs index 7d487d1ebf..17ebfbaceb 100644 --- a/tee-worker/core/tls-websocket-server/src/stream_state.rs +++ b/tee-worker/core/tls-websocket-server/src/stream_state.rs @@ -54,7 +54,7 @@ impl MaybeServerTlsStream { pub fn wants_write(&self) -> bool { match self { - MaybeServerTlsStream::Plain(_) => true, + MaybeServerTlsStream::Plain(_) => false, // do not monitor writable events for non-tls server MaybeServerTlsStream::Rustls(s) => s.sess.wants_write(), } } diff --git a/tee-worker/core/tls-websocket-server/src/ws_server.rs b/tee-worker/core/tls-websocket-server/src/ws_server.rs index 65cd2e9e39..84a2805749 100644 --- a/tee-worker/core/tls-websocket-server/src/ws_server.rs +++ b/tee-worker/core/tls-websocket-server/src/ws_server.rs @@ -122,6 +122,7 @@ where if connection.is_closed() { trace!("Connection {:?} is closed, removing", token); + connection.deregister(poll)?; connections_lock.remove(&token); trace!( "Closed {:?}, {} active connections remaining", diff --git a/ts-tests/integration-tests/evm-contract.test.ts b/ts-tests/integration-tests/evm-contract.test.ts index 6bc7fe44a2..ffcd6dc102 100644 --- a/ts-tests/integration-tests/evm-contract.test.ts +++ b/ts-tests/integration-tests/evm-contract.test.ts @@ -178,7 +178,7 @@ describeLitentry('Test EVM Module Contract', ``, (context) => { console.log(`Tx successful with hash: ${createReceipt.transactionHash}`); }; const setMsg = await setMessage(deployed.contractAddress!, evmAccountRaw, 'Goodbye World'); - const sayMsg = await sayMessage(deployed.contractAddress!) + const sayMsg = await sayMessage(deployed.contractAddress!); const setResult = sayMsg === 'Goodbye World' ? 1 : 0; assert.equal(1, setResult, 'Contract modified storage query mismatch');