X-Git-Url: http://dolda2000.com/gitweb/?p=jagi.git;a=blobdiff_plain;f=src%2Fjagi%2Fscgi%2FEventServer.java;fp=src%2Fjagi%2Fscgi%2FEventServer.java;h=821897354399d91e7ba0785163eb37d3520e6a2a;hp=202b8ddad9f109b70bd9dff9e714fa5a292dcd25;hb=ea0d7d15272f1a80dd79970413adc390f543640b;hpb=794a5c90597dcfeffafbc5976cde812072023d0a diff --git a/src/jagi/scgi/EventServer.java b/src/jagi/scgi/EventServer.java index 202b8dd..8218973 100644 --- a/src/jagi/scgi/EventServer.java +++ b/src/jagi/scgi/EventServer.java @@ -115,7 +115,7 @@ public class EventServer implements Runnable { public void handle(int events) throws IOException { if(!eof && (buf.remaining() == 0)) { - buf.rewind(); + buf.clear(); while(buf.remaining() > 0) { if(in.read(buf) < 0) break; @@ -168,7 +168,7 @@ public class EventServer implements Runnable { public void handle(int events) throws IOException { double now = Driver.current().time(); if((events & SelectionKey.OP_READ) != 0) { - buf.rewind(); + buf.clear(); if(buf.remaining() > max - cur) buf.limit(buf.position() + (int)Math.min(max - cur, Integer.MAX_VALUE)); int rv = sk.read(buf); @@ -176,7 +176,8 @@ public class EventServer implements Runnable { eof = true; } else if(rv > 0) { lastread = now; - cur += rv; + if((cur += rv) >= max) + eof = true; } buf.flip(); while(buf.remaining() > 0)