mirror of https://github.com/getdnsapi/getdns.git
Review comments from Jim
This commit is contained in:
parent
a8fac29a66
commit
3b7b83e309
|
@ -1199,7 +1199,7 @@ static void tas_read_cb(void *userarg)
|
|||
return;
|
||||
}
|
||||
}
|
||||
} else if (_getdns_socket_retry())
|
||||
} else if (_getdns_socket_wants_retry())
|
||||
return;
|
||||
|
||||
DEBUG_ANCHOR("Read error: %d %s\n", (int)n, _getdns_errnostr());
|
||||
|
@ -1249,7 +1249,7 @@ static void tas_write_cb(void *userarg)
|
|||
tas_read_cb, NULL, tas_timeout_cb));
|
||||
return;
|
||||
|
||||
} else if (_getdns_socket_retry())
|
||||
} else if (_getdns_socket_wants_retry())
|
||||
return;
|
||||
|
||||
DEBUG_ANCHOR("Write error: %s\n", _getdns_errnostr());
|
||||
|
|
|
@ -147,32 +147,6 @@ const char *_getdns_strerror(DWORD errnum)
|
|||
case WSA_QOS_EFLOWSPEC: return "QOS flowspec error.";
|
||||
case WSA_QOS_EPROVSPECBUF: return "Invalid QOS provider buffer.";
|
||||
case WSA_QOS_EFILTERSTYLE: return "Invalid QOS filter style.";
|
||||
case WSAEPROVIDERFAILEDINIT: return "Service provider failed to initialize.";
|
||||
case WSASYSCALLFAILURE: return "System call failure.";
|
||||
case WSASERVICE_NOT_FOUND: return "Service not found.";
|
||||
case WSATYPE_NOT_FOUND: return "Class type not found.";
|
||||
case WSA_E_NO_MORE: return "No more results.";
|
||||
case WSA_E_CANCELLED: return "Call was canceled.";
|
||||
case WSAEREFUSED: return "Database query was refused.";
|
||||
case WSAHOST_NOT_FOUND: return "Host not found.";
|
||||
case WSATRY_AGAIN: return "Nonauthoritative host not found.";
|
||||
case WSANO_RECOVERY: return "This is a nonrecoverable error.";
|
||||
case WSANO_DATA: return "Valid name, no data record of requested type.";
|
||||
case WSA_QOS_RECEIVERS: return "QOS receivers.";
|
||||
case WSA_QOS_SENDERS: return "QOS senders.";
|
||||
case WSA_QOS_NO_SENDERS: return "No QOS senders.";
|
||||
case WSA_QOS_NO_RECEIVERS: return "QOS no receivers.";
|
||||
case WSA_QOS_REQUEST_CONFIRMED: return "QOS request confirmed.";
|
||||
case WSA_QOS_ADMISSION_FAILURE: return "QOS admission error.";
|
||||
case WSA_QOS_POLICY_FAILURE: return "QOS policy failure.";
|
||||
case WSA_QOS_BAD_STYLE: return "QOS bad style.";
|
||||
case WSA_QOS_BAD_OBJECT: return "QOS bad object.";
|
||||
case WSA_QOS_TRAFFIC_CTRL_ERROR: return "QOS traffic control error.";
|
||||
case WSA_QOS_GENERIC_ERROR: return "QOS generic error.";
|
||||
case WSA_QOS_ESERVICETYPE: return "QOS service type error.";
|
||||
case WSA_QOS_EFLOWSPEC: return "QOS flowspec error.";
|
||||
case WSA_QOS_EPROVSPECBUF: return "Invalid QOS provider buffer.";
|
||||
case WSA_QOS_EFILTERSTYLE: return "Invalid QOS filter style.";
|
||||
case WSA_QOS_EFILTERTYPE: return "Invalid QOS filter type.";
|
||||
case WSA_QOS_EFILTERCOUNT: return "Incorrect QOS filter count.";
|
||||
case WSA_QOS_EOBJLENGTH: return "Invalid QOS object length.";
|
||||
|
@ -187,7 +161,7 @@ const char *_getdns_strerror(DWORD errnum)
|
|||
case WSA_QOS_RESERVED_PETYPE: return "Reserved policy QOS element type.";
|
||||
default:
|
||||
snprintf(unknown, sizeof(unknown),
|
||||
"unknown WSA error code %d", (int)err);
|
||||
"unknown WSA error code %d", (int)errnum);
|
||||
return unknown;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,11 @@ typedef u_short sa_family_t;
|
|||
#define _getdns_ENOBUFS (WSAENOBUFS)
|
||||
#define _getdns_EPROTO (0)
|
||||
#define _getdns_EMFILE (WSAEMFILE)
|
||||
#define _getdns_ENFILE (WSAENFILE)
|
||||
#ifdef WSAENFILE
|
||||
# define _getdns_ENFILE (WSAENFILE)
|
||||
#else
|
||||
# define _getdns_ENFILE (0)
|
||||
#endif
|
||||
#define _getdns_ECONNRESET (WSAECONNRESET)
|
||||
#define _getdns_ECONNABORTED (0)
|
||||
#define _getdns_EISCONN (WSAEISCONN)
|
||||
|
@ -138,7 +142,7 @@ void _getdns_perror(const char *str);
|
|||
|| (X) == _getdns_EWOULDBLOCK \
|
||||
|| (X) == _getdns_EINPROGRESS \
|
||||
|| (X) == _getdns_ENOBUFS )
|
||||
#define _getdns_socket_retry() (_getdns_errno_retry(_getdns_socketerror()))
|
||||
#define _getdns_socket_wants_retry() (_getdns_errno_retry(_getdns_socketerror()))
|
||||
#define _getdns_resource_depletion() ( _getdns_socketerror() == _getdns_ENFILE \
|
||||
|| _getdns_socketerror() == _getdns_EMFILE )
|
||||
|
||||
|
|
10
src/server.c
10
src/server.c
|
@ -191,7 +191,7 @@ static void tcp_write_cb(void *userarg)
|
|||
(const void *)&to_write->write_buf[to_write->written],
|
||||
to_write->write_buf_len - to_write->written, 0)) == -1) {
|
||||
|
||||
if (_getdns_socket_retry())
|
||||
if (_getdns_socket_wants_retry())
|
||||
return;
|
||||
|
||||
DEBUG_SERVER("I/O error from send(): %s\n",
|
||||
|
@ -287,7 +287,7 @@ getdns_reply(
|
|||
|
||||
if (conn->l->fd >= 0 && sendto(conn->l->fd, (void *)buf, len, 0,
|
||||
(struct sockaddr *)&conn->remote_in, conn->addrlen) == -1) {
|
||||
/* TODO: handle _getdns_socket_retry() */
|
||||
/* TODO: handle _getdns_socket_wants_retry() */
|
||||
|
||||
/* IO error, never cleanup a listener because of I/O error */
|
||||
DEBUG_SERVER("I/O error from sendto(): %s\n",
|
||||
|
@ -371,7 +371,7 @@ static void tcp_read_cb(void *userarg)
|
|||
|
||||
if ((bytes_read = recv(conn->fd,
|
||||
(void *)conn->read_pos, conn->to_read, 0)) < 0) {
|
||||
if (_getdns_socket_retry())
|
||||
if (_getdns_socket_wants_retry())
|
||||
return; /* Come back to do the read later */
|
||||
|
||||
/* IO error, close connection */
|
||||
|
@ -486,7 +486,7 @@ static void tcp_accept_cb(void *userarg)
|
|||
if ((conn->fd = accept(l->fd, (struct sockaddr *)
|
||||
&conn->super.remote_in, &conn->super.addrlen)) == -1) {
|
||||
|
||||
if (_getdns_socket_retry() ||
|
||||
if (_getdns_socket_wants_retry() ||
|
||||
_getdns_socketerror() == _getdns_ECONNRESET)
|
||||
; /* pass */
|
||||
|
||||
|
@ -564,7 +564,7 @@ static void udp_read_cb(void *userarg)
|
|||
conn->addrlen = sizeof(conn->remote_in);
|
||||
if ((len = recvfrom(l->fd, (void *)buf, sizeof(buf), 0,
|
||||
(struct sockaddr *)&conn->remote_in, &conn->addrlen)) == -1) {
|
||||
if ( _getdns_socket_retry() &&
|
||||
if ( _getdns_socket_wants_retry() &&
|
||||
_getdns_socketerror() != _getdns_ECONNRESET) {
|
||||
/*
|
||||
* WINSOCK gives ECONNRESET on ICMP Port Unreachable
|
||||
|
|
|
@ -638,7 +638,7 @@ stub_tcp_read(int fd, getdns_tcp_state *tcp, struct mem_funcs *mf)
|
|||
}
|
||||
read = recv(fd, (void *)tcp->read_pos, tcp->to_read, 0);
|
||||
if (read < 0) {
|
||||
if (_getdns_socket_retry())
|
||||
if (_getdns_socket_wants_retry())
|
||||
return STUB_TCP_RETRY;
|
||||
else
|
||||
return STUB_TCP_ERROR;
|
||||
|
@ -756,7 +756,7 @@ stub_tcp_write(int fd, getdns_tcp_state *tcp, getdns_network_req *netreq)
|
|||
(struct sockaddr *)&(netreq->upstream->addr),
|
||||
netreq->upstream->addr_len);
|
||||
#endif
|
||||
if ((written == -1 && _getdns_socket_retry()) ||
|
||||
if ((written == -1 && _getdns_socket_wants_retry()) ||
|
||||
(size_t)written < pkt_len + 2) {
|
||||
|
||||
/* We couldn't write the whole packet.
|
||||
|
@ -788,7 +788,7 @@ stub_tcp_write(int fd, getdns_tcp_state *tcp, getdns_network_req *netreq)
|
|||
written = send(fd, (void *)(tcp->write_buf + tcp->written),
|
||||
tcp->write_buf_len - tcp->written, 0);
|
||||
if (written == -1) {
|
||||
if (_getdns_socket_retry())
|
||||
if (_getdns_socket_wants_retry())
|
||||
return STUB_TCP_RETRY;
|
||||
else {
|
||||
DEBUG_STUB("%s %-35s: MSG: %p error while writing to TCP socket:"
|
||||
|
@ -1331,7 +1331,7 @@ stub_udp_read_cb(void *userarg)
|
|||
* i.e. overflow
|
||||
*/
|
||||
0, NULL, NULL);
|
||||
if (read == -1 && (_getdns_socket_retry() ||
|
||||
if (read == -1 && (_getdns_socket_wants_retry() ||
|
||||
_getdns_socketerror() == _getdns_ECONNRESET))
|
||||
return; /* Try again later */
|
||||
|
||||
|
|
Loading…
Reference in New Issue