note
reasonablekeith
d'oh. I'd ass-u-me d that it blocked for the full length of the read. I just hacked in this for the read subroutine...
<code>
my $total_bytes_to_read;
sysread $sock, $total_bytes_to_read, 20;
my $total_bytes_read = 0;
my $read_string = '';
while ($total_bytes_read < $total_bytes_to_read) {
my $buffer;
my $bytes_read = sysread $sock, $buffer, ($total_bytes_to_read - $total_bytes_read);
$total_bytes_read += $bytes_read;
$read_string .= $buffer;
}
$total_bytes_to_read == $total_bytes_read
or die("Tried to read $total_bytes_to_read bits but only got $total_bytes_read bits\n");
return $read_string;
</code>
and have been unable to reproduce the error. Thank you! ++
<p>
PS: I will abstract the loop, as I realise the other sysread here could suffer the same problem
<p>
<b>Update:</b> Just seen your code. I shall be nicking that :)
<p>
<b>Update2:</b> Worked a treat with an extra curly bracket and two semi-colons :)
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-425417">
<font size="-2">
---<br/>
<i>my name's not Keith, and I'm not reasonable.</i>
</font>
</div></div>
794600
794602