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;