diff --git a/components/net/cpp/src/peer.cpp b/components/net/cpp/src/peer.cpp
index 1e63218c2e75ed21efe893825a293f8f2264969b..ca2e13a0373068129aa45c7d8d891263b6d07e56 100644
--- a/components/net/cpp/src/peer.cpp
+++ b/components/net/cpp/src/peer.cpp
@@ -664,6 +664,8 @@ void Peer::_connected() {
 int Peer::_send() {
 	if (sock_ == INVALID_SOCKET) return -1;
 
+	int c=0;
+
 	// Are we using a websocket?
 	if (scheme_ == ftl::URI::SCHEME_WS) {
 		// Create a websocket header as well.
@@ -690,24 +692,42 @@ int Peer::_send() {
 		// Patch the first io vector to be ws header
 		const_cast<iovec*>(&sendvec[0])->iov_base = buf;
 		const_cast<iovec*>(&sendvec[0])->iov_len = rc;
-	}
 	
 #ifdef WIN32
-	auto send_vec = send_buf_.vector();
-	auto send_size = send_buf_.vector_size();
-	vector<WSABUF> wsabuf(send_size);
-
-	for (int i = 0; i < send_size; i++) {
-		wsabuf[i].len = (ULONG)send_vec[i].iov_len;
-		wsabuf[i].buf = (char*)send_vec[i].iov_base;
-		//c += ftl::net::internal::send(sock_, (char*)send_vec[i].iov_base, (int)send_vec[i].iov_len, 0);
-	}
+		auto send_vec = send_buf_.vector();
+		auto send_size = send_buf_.vector_size();
+		vector<WSABUF> wsabuf(send_size);
+
+		for (int i = 0; i < send_size; i++) {
+			wsabuf[i].len = (ULONG)send_vec[i].iov_len;
+			wsabuf[i].buf = (char*)send_vec[i].iov_base;
+			//c += ftl::net::internal::send(sock_, (char*)send_vec[i].iov_base, (int)send_vec[i].iov_len, 0);
+		}
+
+		DWORD bytessent;
+		c = WSASend(sock_, wsabuf.data(), static_cast<DWORD>(send_size), (LPDWORD)&bytessent, 0, NULL, NULL);
+#else
+		c = ftl::net::internal::writev(sock_, send_buf_.vector(), (int)send_buf_.vector_size());
+#endif
+
+	} else {
+#ifdef WIN32
+		auto send_vec = send_buf_.vector();
+		auto send_size = send_buf_.vector_size();
+		vector<WSABUF> wsabuf(send_size);
+
+		for (int i = 0; i < send_size; i++) {
+			wsabuf[i].len = (ULONG)send_vec[i].iov_len;
+			wsabuf[i].buf = (char*)send_vec[i].iov_base;
+			//c += ftl::net::internal::send(sock_, (char*)send_vec[i].iov_base, (int)send_vec[i].iov_len, 0);
+		}
 
-	DWORD bytessent;
-	int c = WSASend(sock_, wsabuf.data(), static_cast<DWORD>(send_size), (LPDWORD)&bytessent, 0, NULL, NULL);
+		DWORD bytessent;
+		c = WSASend(sock_, wsabuf.data(), static_cast<DWORD>(send_size), (LPDWORD)&bytessent, 0, NULL, NULL);
 #else
-	int c = ftl::net::internal::writev(sock_, send_buf_.vector(), (int)send_buf_.vector_size());
+		c = ftl::net::internal::writev(sock_, send_buf_.vector(), (int)send_buf_.vector_size());
 #endif
+	} 
 
 	send_buf_.clear();