summaryrefslogtreecommitdiff
path: root/packet.c
diff options
context:
space:
mode:
authorBen Lindstrom <mouring@eviladmin.org>2001-02-15 03:12:08 +0000
committerBen Lindstrom <mouring@eviladmin.org>2001-02-15 03:12:08 +0000
commitf9452513fcf92be881809006ce3c210805d5f2ad (patch)
tree7422ff5a747a6183001292786a74b36adc9453b4 /packet.c
parentd8a9021f3652d8ab99d0fed2460420c3eb4e10a2 (diff)
- deraadt@cvs.openbsd.org 2001/02/12 22:56:09
[clientloop.c packet.c ssh-keyscan.c] deal with EAGAIN/EINTR selects which were skipped
Diffstat (limited to 'packet.c')
-rw-r--r--packet.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/packet.c b/packet.c
index 46e89bc0c..fb4314553 100644
--- a/packet.c
+++ b/packet.c
@@ -37,7 +37,7 @@
37 */ 37 */
38 38
39#include "includes.h" 39#include "includes.h"
40RCSID("$OpenBSD: packet.c,v 1.50 2001/02/11 12:59:25 markus Exp $"); 40RCSID("$OpenBSD: packet.c,v 1.51 2001/02/12 22:56:09 deraadt Exp $");
41 41
42#include "xmalloc.h" 42#include "xmalloc.h"
43#include "buffer.h" 43#include "buffer.h"
@@ -688,7 +688,9 @@ packet_read(int *payload_len_ptr)
688 FD_SET(connection_in, &set); 688 FD_SET(connection_in, &set);
689 689
690 /* Wait for some data to arrive. */ 690 /* Wait for some data to arrive. */
691 select(connection_in + 1, &set, NULL, NULL, NULL); 691 while (select(connection_in + 1, &set, NULL, NULL, NULL) == -1 &&
692 (errno == EAGAIN || errno == EINTR))
693 ;
692 694
693 /* Read data from the socket. */ 695 /* Read data from the socket. */
694 len = read(connection_in, buf, sizeof(buf)); 696 len = read(connection_in, buf, sizeof(buf));
@@ -1195,9 +1197,12 @@ packet_write_wait()
1195 packet_write_poll(); 1197 packet_write_poll();
1196 while (packet_have_data_to_write()) { 1198 while (packet_have_data_to_write()) {
1197 fd_set set; 1199 fd_set set;
1200
1198 FD_ZERO(&set); 1201 FD_ZERO(&set);
1199 FD_SET(connection_out, &set); 1202 FD_SET(connection_out, &set);
1200 select(connection_out + 1, NULL, &set, NULL, NULL); 1203 while (select(connection_out + 1, NULL, &set, NULL, NULL) == -1 &&
1204 (errno == EAGAIN || errno == EINTR))
1205 ;
1201 packet_write_poll(); 1206 packet_write_poll();
1202 } 1207 }
1203} 1208}