mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-03 08:05:21 +00:00
use handles for isc_nm_pauseread() and isc_nm_resumeread()
by having these functions act on netmgr handles instead of socket objects, they can be used in callback functions outside the netgmr.
This commit is contained in:
@@ -204,9 +204,12 @@ isc_result_t
|
||||
isc_nm_read(isc_nmhandle_t *handle, isc_nm_recv_cb_t cb, void *cbarg);
|
||||
|
||||
isc_result_t
|
||||
isc_nm_pauseread(isc_nmsocket_t *sock);
|
||||
isc_nm_pauseread(isc_nmhandle_t *handle);
|
||||
/*%<
|
||||
* Pause reading on this socket, while still remembering the callback.
|
||||
* Pause reading on this handle's socket, but remember the callback.
|
||||
*
|
||||
* Requires:
|
||||
* \li 'handle' is a valid netmgr handle.
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -221,13 +224,13 @@ isc_nm_cancelread(isc_nmhandle_t *handle);
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc_nm_resumeread(isc_nmsocket_t *sock);
|
||||
isc_nm_resumeread(isc_nmhandle_t *handle);
|
||||
/*%<
|
||||
* Resume reading from socket.
|
||||
* Resume reading on the handle's socket.
|
||||
*
|
||||
* Requires:
|
||||
* \li 'sock' is a valid netmgr socket
|
||||
* \li ...for which a read/recv callback has been defined.
|
||||
* \li 'handle' is a valid netmgr handle.
|
||||
* \li ...for a socket with a defined read/recv callback.
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
|
@@ -1379,8 +1379,10 @@ isc_nm_cancelread(isc_nmhandle_t *handle) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_nm_pauseread(isc_nmsocket_t *sock) {
|
||||
REQUIRE(VALID_NMSOCK(sock));
|
||||
isc_nm_pauseread(isc_nmhandle_t *handle) {
|
||||
REQUIRE(VALID_NMHANDLE(handle));
|
||||
|
||||
isc_nmsocket_t *sock = handle->sock;
|
||||
|
||||
switch (sock->type) {
|
||||
case isc_nm_tcpsocket:
|
||||
@@ -1392,8 +1394,10 @@ isc_nm_pauseread(isc_nmsocket_t *sock) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_nm_resumeread(isc_nmsocket_t *sock) {
|
||||
REQUIRE(VALID_NMSOCK(sock));
|
||||
isc_nm_resumeread(isc_nmhandle_t *handle) {
|
||||
REQUIRE(VALID_NMHANDLE(handle));
|
||||
|
||||
isc_nmsocket_t *sock = handle->sock;
|
||||
|
||||
switch (sock->type) {
|
||||
case isc_nm_tcpsocket:
|
||||
|
@@ -283,7 +283,7 @@ dnslisten_readcb(isc_nmhandle_t *handle, isc_result_t eresult,
|
||||
* one packet, so we're done until the next read
|
||||
* completes.
|
||||
*/
|
||||
isc_nm_pauseread(dnssock->outerhandle->sock);
|
||||
isc_nm_pauseread(dnssock->outerhandle);
|
||||
done = true;
|
||||
} else {
|
||||
/*
|
||||
@@ -295,7 +295,7 @@ dnslisten_readcb(isc_nmhandle_t *handle, isc_result_t eresult,
|
||||
*/
|
||||
if (atomic_load(&dnssock->ah) >=
|
||||
TCPDNS_CLIENTS_PER_CONN) {
|
||||
isc_nm_pauseread(dnssock->outerhandle->sock);
|
||||
isc_nm_pauseread(dnssock->outerhandle);
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
@@ -376,7 +376,7 @@ isc_nm_tcpdns_sequential(isc_nmhandle_t *handle) {
|
||||
* closehandle_cb callback, called whenever a handle
|
||||
* is released.
|
||||
*/
|
||||
isc_nm_pauseread(handle->sock->outerhandle->sock);
|
||||
isc_nm_pauseread(handle->sock->outerhandle);
|
||||
atomic_store(&handle->sock->sequential, true);
|
||||
}
|
||||
|
||||
@@ -431,7 +431,7 @@ resume_processing(void *arg) {
|
||||
}
|
||||
isc_nmhandle_unref(handle);
|
||||
} else if (sock->outerhandle != NULL) {
|
||||
result = isc_nm_resumeread(sock->outerhandle->sock);
|
||||
result = isc_nm_resumeread(sock->outerhandle);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_nmhandle_unref(sock->outerhandle);
|
||||
sock->outerhandle = NULL;
|
||||
@@ -454,7 +454,7 @@ resume_processing(void *arg) {
|
||||
* Nothing in the buffer; resume reading.
|
||||
*/
|
||||
if (sock->outerhandle != NULL) {
|
||||
isc_nm_resumeread(sock->outerhandle->sock);
|
||||
isc_nm_resumeread(sock->outerhandle);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@@ -457,7 +457,9 @@ isc_nm_listentcpdns
|
||||
isc_nm_listentcp
|
||||
isc_nm_listenudp
|
||||
isc_nm_maxudp
|
||||
isc_nm_pauseread
|
||||
isc_nm_read
|
||||
isc_nm_resumeread
|
||||
isc_nm_send
|
||||
isc_nm_setstats
|
||||
isc_nm_start
|
||||
|
Reference in New Issue
Block a user