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&)


Reply via email to