commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tapan Karecha" <tap...@india.hp.com>
Subject [patch] NetComponents - TelnetInputStream.java threading issue
Date Thu, 19 Sep 2002 11:35:43 GMT
While using NetComponents library on HP-UX 11i platform, even after calling
close() on FTPClient object, the TelnetInputStream thread does not always
terminate; and blocks on wait() for ever. The patch below addresses this
issue. I've tested this fix on Windows and HP-UX and found it OK. Can
someone apply this patch? Thanks!!


--- TelnetInputStream.java.orig	Thu Sep 19 15:48:50 2002
+++ TelnetInputStream.java	Thu Sep 19 15:48:38 2002
@@ -39,7 +39,7 @@
     _STATE_WONT = 3, _STATE_DO = 4, _STATE_DONT = 5, _STATE_SB = 6,
     _STATE_SE = 7, _STATE_CR = 8;

-  private boolean __hasReachedEOF, __isClosed;
+  private volatile boolean __hasReachedEOF, __isClosed;
   private boolean __readIsWaiting;
   private int __receiveState, __queueHead, __queueTail, __bytesAvailable;
   private int[] __queue;
@@ -300,12 +300,12 @@
     // interrupt a system read() from the interrupt() method.
     super.close();

-    synchronized(__queue) {
       __hasReachedEOF = true;
+   	  __isClosed = true;
       if(__thread.isAlive()) {
-	__isClosed = true;
 	__thread.interrupt();
       }
+    synchronized(__queue) {
       __queue.notifyAll();
     }
     /*
@@ -332,10 +332,10 @@
 	} catch(InterruptedIOException e) {
 	  synchronized(__queue) {
 	    __ioException = e;
-	    __queue.notify();
+	    __queue.notifyAll();
 	    try {
 	      //System.out.println("THREAD WAIT B");
-	      __queue.wait();
+	      __queue.wait(100);
 	      //System.out.println("THREAD END WAIT B");
 	    } catch(InterruptedException interrupted) {
 	      if(__isClosed)


--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message