Fixed the transfer method to properly handle the fact that Java's FileChannel transferFrom method doesn't update the position of the destination channel. This version of the transfer method is only called if the source stream is unseekable (i.e. a socket or, in my case ServletUpload's FileItemStream). The bug occurs if the size of the source is greater than 4196 bytes.
fix unseekable streams copying in RubyIO.java
Looks good, thanks!