=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/packet.c,v retrieving revision 1.306 retrieving revision 1.307 diff -u -r1.306 -r1.307 --- src/usr.bin/ssh/packet.c 2022/01/21 06:58:06 1.306 +++ src/usr.bin/ssh/packet.c 2022/01/22 00:49:34 1.307 @@ -1,4 +1,4 @@ -/* $OpenBSD: packet.c,v 1.306 2022/01/21 06:58:06 djm Exp $ */ +/* $OpenBSD: packet.c,v 1.307 2022/01/22 00:49:34 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -1760,6 +1760,31 @@ if ((r = sshbuf_put(state->input, buf, len)) != 0) return r; + return 0; +} + +/* Reads and buffers data from the specified fd */ +int +ssh_packet_process_read(struct ssh *ssh, int fd) +{ + struct session_state *state = ssh->state; + int r; + size_t rlen; + + if ((r = sshbuf_read(fd, state->input, PACKET_MAX_SIZE, &rlen)) != 0) + return r; + + if (state->packet_discard) { + if ((r = sshbuf_consume_end(state->input, rlen)) != 0) + return r; + state->keep_alive_timeouts = 0; /* ?? */ + if (rlen >= state->packet_discard) { + if ((r = ssh_packet_stop_discard(ssh)) != 0) + return r; + } + state->packet_discard -= rlen; + return 0; + } return 0; }