-/* This function was added to overcome a deadlock problem when using
- * ssh. It looks like we can't allow our receive queue to get full or
- * ssh will clag up. Uggh. */
-static void read_check(int f)
-{
- int n;
-
- if (f == -1) return;
-
- if (read_buffer_len == 0) {
- read_buffer_p = read_buffer;
- }
-
- if ((n=num_waiting(f)) <= 0)
- return;
-
- /* things could deteriorate if we read in really small chunks */
- if (n < 10) n = 1024;
-
- if (n > MAX_READ_BUFFER/4)
- n = MAX_READ_BUFFER/4;
-
- if (read_buffer_p != read_buffer) {
- memmove(read_buffer,read_buffer_p,read_buffer_len);
- read_buffer_p = read_buffer;
- }
-
- if (n > (read_buffer_size - read_buffer_len)) {
- read_buffer_size += n;
- if (!read_buffer)
- read_buffer = (char *)malloc(read_buffer_size);
- else
- read_buffer = (char *)realloc(read_buffer,read_buffer_size);
- if (!read_buffer) out_of_memory("read check");
- read_buffer_p = read_buffer;
- }
-
- n = read_unbuffered(f,read_buffer+read_buffer_len,n);
- if (n > 0) {
- read_buffer_len += n;
- }
-}
-
-static int readfd(int fd,char *buffer,int N)
+/* do a buffered read from fd. don't return until all N bytes
+ have been read. If all N can't be read then exit with an error */
+static void readfd(int fd,char *buffer,int N)