mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
4219. [bug] Set event->result to ISC_R_WOULDBLOCK on EWOULDBLOCK,
EGAIN when these soft error are not retried for
isc_socket_send*().
This commit is contained in:
parent
09d72af3e9
commit
a21c415687
4 changed files with 12 additions and 2 deletions
4
CHANGES
4
CHANGES
|
|
@ -1,3 +1,7 @@
|
|||
4219. [bug] Set event->result to ISC_R_WOULDBLOCK on EWOULDBLOCK,
|
||||
EGAIN when these soft error are not retried for
|
||||
isc_socket_send*().
|
||||
|
||||
4218. [bug] Potential null pointer dereference on out of memory
|
||||
if mmap is not supported. [RT #40777]
|
||||
|
||||
|
|
|
|||
|
|
@ -89,9 +89,10 @@
|
|||
#define ISC_R_BADBASE32 60 /*%< bad base32 encoding */
|
||||
#define ISC_R_UNSET 61 /*%< unset */
|
||||
#define ISC_R_MULTIPLE 62 /*%< multiple */
|
||||
#define ISC_R_WOULDBLOCK 63 /*%< would block */
|
||||
|
||||
/*% Not a result code: the number of results. */
|
||||
#define ISC_R_NRESULTS 63
|
||||
#define ISC_R_NRESULTS 64
|
||||
|
||||
ISC_LANG_BEGINDECLS
|
||||
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ static const char *description[ISC_R_NRESULTS] = {
|
|||
"bad base32 encoding", /*%< 60 */
|
||||
"unset", /*%< 61 */
|
||||
"multiple", /*%< 62 */
|
||||
"would block", /*%< 63 */
|
||||
};
|
||||
|
||||
static const char *identifier[ISC_R_NRESULTS] = {
|
||||
|
|
@ -170,6 +171,7 @@ static const char *identifier[ISC_R_NRESULTS] = {
|
|||
"ISC_R_BADBASE32",
|
||||
"ISC_R_UNSET",
|
||||
"ISC_R_MULTIPLE",
|
||||
"ISC_R_WOULDBLOCK",
|
||||
};
|
||||
|
||||
#define ISC_RESULT_RESULTSET 2
|
||||
|
|
|
|||
|
|
@ -2054,8 +2054,11 @@ doio_send(isc__socket_t *sock, isc_socketevent_t *dev) {
|
|||
if (send_errno == EINTR && ++attempts < NRETRIES)
|
||||
goto resend;
|
||||
|
||||
if (SOFT_ERROR(send_errno))
|
||||
if (SOFT_ERROR(send_errno)) {
|
||||
if (errno == EWOULDBLOCK || errno == EAGAIN)
|
||||
dev->result = ISC_R_WOULDBLOCK;
|
||||
return (DOIO_SOFT);
|
||||
}
|
||||
|
||||
#define SOFT_OR_HARD(_system, _isc) \
|
||||
if (send_errno == _system) { \
|
||||
|
|
|
|||
Loading…
Reference in a new issue