Hi,
I have a case where by i am using BufferedInputStream I am waiting for the response I have sent within the telnet session.
If the response is what I expect all is fine, However if the response is not what the application expects the session hangs and won't time out ...
This is my code i have below: can you spot something why this piece of code will not time out when it has finished reading the number of bytes and hasn't found the matchString. ?
Your help much appreciated !
WaitResponse waitingFor(
String[] tokens, long timeout) throws IOException {
long start = System.currentTimeMillis();
long deadline = start + timeout;
StringBuffer response = new StringBuffer();
String matchingToken = null;
for (; null == matchingToken; matchingToken = match(response, tokens)) {
int charread = 0;
while ((charread = is.read(mB, 0, mB.length)) <= 0) {
long now = System.currentTimeMillis();
if (now > deadline) {
throw new IOTimeoutException(TimedOut);
}
try {
Thread.sleep(THREAD_SLEEP_TIME);
} catch (InterruptedException ignored) {
}
}
String mS = new String(mB, 0, charread);
logger.print(mS);
response.append(mS);
logger.flush();
}
return new WaitResponse(response.toString(), matchString);
}
[ December 08, 2008: Message edited by: terry Kiernan ]