浏览代码

Merge pull request #34406 from Faless/net/quite_sockets

Make NetSockets quieter.
Rémi Verschelde 5 年之前
父节点
当前提交
98e540616e
共有 2 个文件被更改,包括 35 次插入15 次删除
  1. 34 14
      drivers/unix/net_socket_posix.cpp
  2. 1 1
      drivers/unix/net_socket_posix.h

+ 34 - 14
drivers/unix/net_socket_posix.cpp

@@ -189,7 +189,7 @@ NetSocketPosix::~NetSocketPosix() {
 #pragma GCC diagnostic ignored "-Wlogical-op"
 #endif
 
-NetSocketPosix::NetError NetSocketPosix::_get_socket_error() {
+NetSocketPosix::NetError NetSocketPosix::_get_socket_error() const {
 #if defined(WINDOWS_ENABLED)
 	int err = WSAGetLastError();
 
@@ -199,7 +199,7 @@ NetSocketPosix::NetError NetSocketPosix::_get_socket_error() {
 		return ERR_NET_IN_PROGRESS;
 	if (err == WSAEWOULDBLOCK)
 		return ERR_NET_WOULD_BLOCK;
-	ERR_PRINTS("Socket error: " + itos(err));
+	print_verbose("Socket error: " + itos(err));
 	return ERR_NET_OTHER;
 #else
 	if (errno == EISCONN)
@@ -208,7 +208,7 @@ NetSocketPosix::NetError NetSocketPosix::_get_socket_error() {
 		return ERR_NET_IN_PROGRESS;
 	if (errno == EAGAIN || errno == EWOULDBLOCK)
 		return ERR_NET_WOULD_BLOCK;
-	ERR_PRINTS("Socket error: " + itos(errno));
+	print_verbose("Socket error: " + itos(errno));
 	return ERR_NET_OTHER;
 #endif
 }
@@ -387,8 +387,10 @@ Error NetSocketPosix::bind(IP_Address p_addr, uint16_t p_port) {
 	size_t addr_size = _set_addr_storage(&addr, p_addr, p_port, _ip_type);
 
 	if (::bind(_sock, (struct sockaddr *)&addr, addr_size) != 0) {
+		_get_socket_error();
+		print_verbose("Failed to bind socket.");
 		close();
-		ERR_FAIL_V(ERR_UNAVAILABLE);
+		return ERR_UNAVAILABLE;
 	}
 
 	return OK;
@@ -398,9 +400,10 @@ Error NetSocketPosix::listen(int p_max_pending) {
 	ERR_FAIL_COND_V(!is_open(), ERR_UNCONFIGURED);
 
 	if (::listen(_sock, p_max_pending) != 0) {
-
+		_get_socket_error();
+		print_verbose("Failed to listen from socket.");
 		close();
-		ERR_FAIL_V(FAILED);
+		return FAILED;
 	};
 
 	return OK;
@@ -427,7 +430,7 @@ Error NetSocketPosix::connect_to_host(IP_Address p_host, uint16_t p_port) {
 			case ERR_NET_IN_PROGRESS:
 				return ERR_BUSY;
 			default:
-				ERR_PRINT("Connection to remote host failed!");
+				print_verbose("Connection to remote host failed!");
 				close();
 				return FAILED;
 		}
@@ -474,12 +477,18 @@ Error NetSocketPosix::poll(PollType p_type, int p_timeout) const {
 	}
 	int ret = select(1, rdp, wrp, &ex, tp);
 
-	ERR_FAIL_COND_V(ret == SOCKET_ERROR, FAILED);
+	if (ret == SOCKET_ERROR) {
+		return FAILED;
+	}
 
 	if (ret == 0)
 		return ERR_BUSY;
 
-	ERR_FAIL_COND_V(FD_ISSET(_sock, &ex), FAILED);
+	if (FD_ISSET(_sock, &ex)) {
+		_get_socket_error();
+		print_verbose("Exception when polling socket.");
+		return FAILED;
+	}
 
 	if (rdp && FD_ISSET(_sock, rdp))
 		ready = true;
@@ -506,8 +515,11 @@ Error NetSocketPosix::poll(PollType p_type, int p_timeout) const {
 
 	int ret = ::poll(&pfd, 1, p_timeout);
 
-	ERR_FAIL_COND_V(ret < 0, FAILED);
-	ERR_FAIL_COND_V(pfd.revents & POLLERR, FAILED);
+	if (ret < 0 || pfd.revents & POLLERR) {
+		_get_socket_error();
+		print_verbose("Error when polling socket.");
+		return FAILED;
+	}
 
 	if (ret == 0)
 		return ERR_BUSY;
@@ -685,11 +697,15 @@ bool NetSocketPosix::is_open() const {
 
 int NetSocketPosix::get_available_bytes() const {
 
-	ERR_FAIL_COND_V(_sock == SOCK_EMPTY, -1);
+	ERR_FAIL_COND_V(!is_open(), -1);
 
 	unsigned long len;
 	int ret = SOCK_IOCTL(_sock, FIONREAD, &len);
-	ERR_FAIL_COND_V(ret == -1, 0);
+	if (ret == -1) {
+		_get_socket_error();
+		print_verbose("Error when checking available bytes on socket.");
+		return -1;
+	}
 	return len;
 }
 
@@ -701,7 +717,11 @@ Ref<NetSocket> NetSocketPosix::accept(IP_Address &r_ip, uint16_t &r_port) {
 	struct sockaddr_storage their_addr;
 	socklen_t size = sizeof(their_addr);
 	SOCKET_TYPE fd = ::accept(_sock, (struct sockaddr *)&their_addr, &size);
-	ERR_FAIL_COND_V(fd == SOCK_EMPTY, out);
+	if (fd == SOCK_EMPTY) {
+		_get_socket_error();
+		print_verbose("Error when accepting socket connection.");
+		return out;
+	}
 
 	_set_ip_port(&their_addr, r_ip, r_port);
 

+ 1 - 1
drivers/unix/net_socket_posix.h

@@ -58,7 +58,7 @@ private:
 		ERR_NET_OTHER
 	};
 
-	NetError _get_socket_error();
+	NetError _get_socket_error() const;
 	void _set_socket(SOCKET_TYPE p_sock, IP::Type p_ip_type, bool p_is_stream);
 	_FORCE_INLINE_ Error _change_multicast_group(IP_Address p_ip, String p_if_name, bool p_add);
 	_FORCE_INLINE_ void _set_close_exec_enabled(bool p_enabled);