Commit c95f1aa9 authored by Andrew Tridgell's avatar Andrew Tridgell

prioritise reading over writing in the select loop. (this is another

ssh-friendly attempt)
parent 86ffe37f
......@@ -323,14 +323,15 @@ static void writefd_unbuffered(int fd,char *buf,int len)
no_flush++;
reading = (buffer_f_in != -1 && read_buffer_len < MAX_READ_BUFFER);
while (total < len) {
FD_ZERO(&w_fds);
FD_ZERO(&r_fds);
FD_SET(fd,&w_fds);
fd_count = fd+1;
reading = (buffer_f_in != -1 &&
read_buffer_len < MAX_READ_BUFFER);
if (reading) {
FD_SET(buffer_f_in,&r_fds);
if (buffer_f_in > fd)
......@@ -350,6 +351,10 @@ static void writefd_unbuffered(int fd,char *buf,int len)
continue;
}
if (reading && FD_ISSET(buffer_f_in, &r_fds)) {
read_check(buffer_f_in);
}
if (FD_ISSET(fd, &w_fds)) {
int n = (len-total)>>blocked;
int ret = write(fd,buf+total,n?n:1);
......@@ -377,10 +382,6 @@ static void writefd_unbuffered(int fd,char *buf,int len)
last_io = time(NULL);
continue;
}
if (reading && FD_ISSET(buffer_f_in, &r_fds)) {
read_check(buffer_f_in);
}
}
no_flush--;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment