You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2008/05/09 17:13:15 UTC

svn commit: r654848 - in /logging/log4cxx/trunk/src: changes/changes.xml main/cpp/socketappenderskeleton.cpp

Author: carnold
Date: Fri May  9 08:13:15 2008
New Revision: 654848

URL: http://svn.apache.org/viewvc?rev=654848&view=rev
Log:
LOGCXX-278: Threads for reconnecting sockets do not end cleanly when program exits

Modified:
    logging/log4cxx/trunk/src/changes/changes.xml
    logging/log4cxx/trunk/src/main/cpp/socketappenderskeleton.cpp

Modified: logging/log4cxx/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/changes/changes.xml?rev=654848&r1=654847&r2=654848&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/changes/changes.xml (original)
+++ logging/log4cxx/trunk/src/changes/changes.xml Fri May  9 08:13:15 2008
@@ -32,6 +32,7 @@
 <action issue="LOGCXX-272">Apache log4cxx 0.10.1 release</action>
 <action issue="LOGCXX-275">Headers cannot be included with very strict warning settings</action>
 <action issue="LOGCXX-277">Reconnection not working for sockets</action>
+<action issue="LOGCXX-278">Threads for reconnecting sockets do not end cleanly when program exits</action>
 <action issue="LOGCXX-280">tests and sample code unnecessarily compiled during default make target</action>
 <action issue="LOGCXX-281">Sun Studio 11 reports function hides base virtual function warning</action>
 </release>

Modified: logging/log4cxx/trunk/src/main/cpp/socketappenderskeleton.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/socketappenderskeleton.cpp?rev=654848&r1=654847&r2=654848&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/socketappenderskeleton.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/socketappenderskeleton.cpp Fri May  9 08:13:15 2008
@@ -79,6 +79,7 @@
     closed = true;
     cleanUp(pool);
     thread.interrupt();
+    thread.join();
 }
 
 void SocketAppenderSkeleton::connect(Pool& p) {
@@ -144,12 +145,14 @@
                 try
                 {
                         Thread::sleep(socketAppender->reconnectionDelay);
-                        LogLog::debug(LogString(LOG4CXX_STR("Attempting connection to "))
+                        if(!socketAppender->closed) {
+                            LogLog::debug(LogString(LOG4CXX_STR("Attempting connection to "))
                                 + socketAppender->address->getHostName());
-                        socket = new Socket(socketAppender->address, socketAppender->port);
-                        Pool p;
-                        socketAppender->setSocket(socket, p);
-                        LogLog::debug(LOG4CXX_STR("Connection established. Exiting connector thread."));
+                            socket = new Socket(socketAppender->address, socketAppender->port);
+                            Pool p;
+                            socketAppender->setSocket(socket, p);
+                            LogLog::debug(LOG4CXX_STR("Connection established. Exiting connector thread."));
+                        }
                         return NULL;
                 }
                 catch(ConnectException&)