diff --git a/components/net/cpp/src/peer.cpp b/components/net/cpp/src/peer.cpp index 94fbdc03814bb38a0d858aaf39d58de74ac65e4f..c9cf014fa66a973d0d6a683d035c32035470569e 100644 --- a/components/net/cpp/src/peer.cpp +++ b/components/net/cpp/src/peer.cpp @@ -290,6 +290,9 @@ bool Peer::reconnect() { void Peer::_updateURI() { sockaddr_storage addr; + + scheme_ = ftl::URI::SCHEME_TCP; + int rsize = sizeof(sockaddr_storage); if (getpeername(sock_, (sockaddr*)&addr, (socklen_t*)&rsize) == 0) { char addrbuf[INET6_ADDRSTRLEN]; @@ -435,7 +438,7 @@ bool Peer::_data() { } disp_->dispatch(*this, obj); - if (recv_buf_.nonparsed_size() > 0 && scheme_ == ftl::URI::SCHEME_WS) { + if (scheme_ == ftl::URI::SCHEME_WS && recv_buf_.nonparsed_size() > 0) { wsheader_type ws; if (ws_parse(recv_buf_, ws) < 0) { return false;