Update of /cvsroot/freenet/freenet/src/freenet/transport
In directory sc8-pr-cvs1:/tmp/cvs-serv15768/src/freenet/transport

Modified Files:
      Tag: ngrouting
        AbstractSelectorLoop.java 
Log Message:
reworked closing

Index: AbstractSelectorLoop.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/transport/AbstractSelectorLoop.java,v
retrieving revision 1.57.2.8
retrieving revision 1.57.2.9
diff -u -r1.57.2.8 -r1.57.2.9
--- AbstractSelectorLoop.java   26 Aug 2003 21:31:49 -0000      1.57.2.8
+++ AbstractSelectorLoop.java   29 Aug 2003 16:42:30 -0000      1.57.2.9
@@ -226,6 +226,9 @@
        }
        
        protected abstract int myKeyOps();
+       public SelectionKey keyFor(SelectableChannel ch) {
+               return ch.keyFor(sel);
+       }
        
        /**
         * register/unregister waiters in the queues
@@ -403,25 +406,30 @@
        {
                
                synchronized(closeQueue) {
-                       LinkedList skippedQueue = new LinkedList();
+                       
                        synchronized(preCloseQueueObject) {
                                //boolean wasEmpty = closeQueue.isEmpty();
                                //boolean itemAdded = false;
                                while(!preCloseQueue.isEmpty()) {
                                        ClosePair current = 
(ClosePair)preCloseQueue.removeFirst();
-                                       if (current.sc != null && 
current.sc.keyFor(sel) != null) {
-                                               current.sc.keyFor(sel).cancel();
-                                               closeQueue.addLast(current);
-                                       } else
-                                               skippedQueue.add(current);
+                                       if (current.sc != null)
+                                               if 
(tcpConnection.getRSL().keyFor(current.sc)!=null) {
+                                                       
tcpConnection.getRSL().keyFor(current.sc).cancel();
+                                                       closeQueue.addLast(current);
+                                               } else 
+                                               if 
(tcpConnection.getWSL().keyFor(current.sc)!=null) {
+                                                       
tcpConnection.getWSL().keyFor(current.sc).cancel();
+                                                       closeQueue.addLast(current);
+                                               } else 
+                                                       closeQueue.addLast(current); 
//key is not registered anywhere?
+                               } 
                                //      itemAdded = true;
-                               }
+                       }
                                        
                                /*if(wasEmpty && itemAdded)
                                        closeQueue.notify();*/
-                               if (! skippedQueue.isEmpty())
-                                       preCloseQueue=skippedQueue;
-                       }
+                               
+                       
                        
                }       
        }
@@ -507,8 +515,7 @@
                                        // we should die a horrible death and at least 
log something, damn it! --zab
                        
                } catch (Error e) {
-                       if(e.getMessage() != null && 
-                          e.getMessage().indexOf("POLLNVAL") >= 0) {
+                       if(e.getMessage().indexOf("POLLNVAL") >= 0) {
                                // GRRRRR!
                                Core.logger.log(this, "POLLNVAL detected in "+this+" 
("+e+
                                                                "), trying to 
workaround - I hate JVMs!", 

_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to