+ my $max_buffer_len = 256*1024;
+
+ my $drain_buffer = sub {
+ my ($fh, $buffer_ref) = @_;
+
+ my $len = length($$buffer_ref);
+ my $nr = syswrite($fh, $$buffer_ref);
+ if (!defined($nr)) {
+ next if $! == EINTR || $! == EAGAIN;
+ die "drain buffer - write error - $!\n";
+ }
+ return $nr if !$nr;
+ substr($$buffer_ref, 0, $nr, '');
+ $len = length($$buffer_ref);
+ $write_select->remove($fh) if !$len;
+ };
+