version 1.416, 2022/04/11 22:52:08 |
version 1.417, 2022/04/20 04:19:11 |
|
|
c = sc->channels[i]; |
c = sc->channels[i]; |
if (c == NULL) |
if (c == NULL) |
continue; |
continue; |
|
/* Try to keep IO going while rekeying */ |
|
if (ssh_packet_is_rekeying(ssh) && c->type != SSH_CHANNEL_OPEN) |
|
continue; |
if (c->delayed) { |
if (c->delayed) { |
if (table == CHAN_PRE) |
if (table == CHAN_PRE) |
c->delayed = 0; |
c->delayed = 0; |
|
|
/* Allocate 4x pollfd for each channel (rfd, wfd, efd, sock) */ |
/* Allocate 4x pollfd for each channel (rfd, wfd, efd, sock) */ |
if (sc->channels_alloc >= (INT_MAX / 4) - npfd_reserved) |
if (sc->channels_alloc >= (INT_MAX / 4) - npfd_reserved) |
fatal_f("too many channels"); /* shouldn't happen */ |
fatal_f("too many channels"); /* shouldn't happen */ |
if (!ssh_packet_is_rekeying(ssh)) |
npfd += sc->channels_alloc * 4; |
npfd += sc->channels_alloc * 4; |
|
if (npfd > *npfd_allocp) { |
if (npfd > *npfd_allocp) { |
*pfdp = xrecallocarray(*pfdp, *npfd_allocp, |
*pfdp = xrecallocarray(*pfdp, *npfd_allocp, |
npfd, sizeof(**pfdp)); |
npfd, sizeof(**pfdp)); |
*npfd_allocp = npfd; |
*npfd_allocp = npfd; |
} |
} |
*npfd_activep = npfd_reserved; |
*npfd_activep = npfd_reserved; |
if (ssh_packet_is_rekeying(ssh)) |
|
return; |
|
|
|
oalloc = sc->channels_alloc; |
oalloc = sc->channels_alloc; |
|
|
channel_handler(ssh, CHAN_PRE, minwait_secs); |
channel_handler(ssh, CHAN_PRE, minwait_secs); |