Author: remm
Date: Thu Feb 16 05:22:51 2006
New Revision: 378241

URL: http://svn.apache.org/viewcvs?rev=378241&view=rev
Log:
- Fix a dumb programming error which could cause a crash (rare, fortunately) 
after a poll error.
  i-- was used for the loop, so if sockets add were pending, the first socket 
(position 0) would
  be destroyed but not removed from the poller.
- Change syncing to sync on "this", as init reallocates a new addS object. 
Please review to make
  sure all my syncs match my notify calls :)

Modified:
    
tomcat/connectors/trunk/util/java/org/apache/tomcat/util/net/AprEndpoint.java

Modified: 
tomcat/connectors/trunk/util/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: 
http://svn.apache.org/viewcvs/tomcat/connectors/trunk/util/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=378241&r1=378240&r2=378241&view=diff
==============================================================================
--- 
tomcat/connectors/trunk/util/java/org/apache/tomcat/util/net/AprEndpoint.java 
(original)
+++ 
tomcat/connectors/trunk/util/java/org/apache/tomcat/util/net/AprEndpoint.java 
Thu Feb 16 05:22:51 2006
@@ -985,7 +985,7 @@
          */
         protected void destroy() {
             // Close all sockets in the add queue
-            for (int i = 0; i < addCount; i--) {
+            for (int i = 0; i < addCount; i++) {
                 Socket.destroy(addS[i]);
             }
             // Close all sockets still in the poller
@@ -1009,7 +1009,7 @@
          * @param socket to add to the poller
          */
         public void add(long socket) {
-            synchronized (addS) {
+            synchronized (this) {
                 // Add socket to the list. Newly added sockets will wait
                 // at most for pollTime before being polled
                 if (addCount >= addS.length) {
@@ -1019,7 +1019,7 @@
                 }
                 addS[addCount] = socket;
                 addCount++;
-                addS.notify();
+                this.notify();
             }
         }
 
@@ -1046,8 +1046,8 @@
                     // Reset maintain time.
                     maintainTime = 0;
                     try {
-                        synchronized (addS) {
-                            addS.wait();
+                        synchronized (this) {
+                            this.wait();
                         }
                     } catch (InterruptedException e) {
                         // Ignore
@@ -1057,7 +1057,7 @@
                 try {
                     // Add sockets which are waiting to the poller
                     if (addCount > 0) {
-                        synchronized (addS) {
+                        synchronized (this) {
                             for (int i = (addCount - 1); i >= 0; i--) {
                                 int rv = Poll.add
                                     (serverPollset, addS[i], Poll.APR_POLLIN);
@@ -1373,9 +1373,9 @@
             }
             // Add socket to the list. Newly added sockets will wait
             // at most for pollTime before being polled
-            synchronized (addS) {
+            synchronized (this) {
                 addS.add(data);
-                addS.notify();
+                this.notify();
             }
             return false;
         }
@@ -1413,8 +1413,8 @@
 
                 while (sendfileCount < 1 && addS.size() < 1) {
                     try {
-                        synchronized (addS) {
-                            addS.wait();
+                        synchronized (this) {
+                            this.wait();
                         }
                     } catch (InterruptedException e) {
                         // Ignore
@@ -1424,7 +1424,7 @@
                 try {
                     // Add socket to the poller
                     if (addS.size() > 0) {
-                        synchronized (addS) {
+                        synchronized (this) {
                             for (int i = (addS.size() - 1); i >= 0; i--) {
                                 SendfileData data = (SendfileData) addS.get(i);
                                 int rv = Poll.add(sendfilePollset, 
data.socket, Poll.APR_POLLOUT);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to