Author: carnold
Date: Wed Sep 19 22:05:35 2007
New Revision: 577550
URL: http://svn.apache.org/viewvc?rev=577550&view=rev
Log:
LOGCXX-191: Application cores when syslog appender is given an unreachable
host/ip
Added:
logging/log4cxx/trunk/src/test/java/
logging/log4cxx/trunk/src/test/java/org/
logging/log4cxx/trunk/src/test/java/org/apache/
logging/log4cxx/trunk/src/test/java/org/apache/logging/
logging/log4cxx/trunk/src/test/java/org/apache/logging/log4cxx/
logging/log4cxx/trunk/src/test/java/org/apache/logging/log4cxx/helpers/
logging/log4cxx/trunk/src/test/java/org/apache/logging/log4cxx/helpers/InetAddressTestCase.java
Modified:
logging/log4cxx/trunk/pom.xml
logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp
logging/log4cxx/trunk/src/test/cpp/helpers/inetaddresstestcase.cpp
Modified: logging/log4cxx/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/logging/log4cxx/trunk/pom.xml?rev=577550&r1=577549&r2=577550&view=diff
==============================================================================
--- logging/log4cxx/trunk/pom.xml (original)
+++ logging/log4cxx/trunk/pom.xml Wed Sep 19 22:05:35 2007
@@ -29,28 +29,28 @@
<url>http://issues.apache.org/jira/</url>
</issueManagement>
<mailingLists>
- <mailingList>
- <name>log4cxx-user : log4cxx usage</name>
- <subscribe>[EMAIL PROTECTED]</subscribe>
- <unsubscribe>[EMAIL PROTECTED]</unsubscribe>
- <post>[EMAIL PROTECTED]</post>
-
<archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-user/</archive>
- <otherArchives>
-
<otherArchive>http://marc.info/?l=log4cxx-user</otherArchive>
-
<otherArchive>http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.user</otherArchive>
- </otherArchives>
- </mailingList>
- <mailingList>
- <name>log4cxx-dev : log4cxx development</name>
- <subscribe>[EMAIL PROTECTED]</subscribe>
- <unsubscribe>[EMAIL PROTECTED]</unsubscribe>
- <post>[email protected]</post>
-
<archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/</archive>
- <otherArchives>
- <otherArchive>http://marc.info/?l=log4cxx-dev</otherArchive>
-
<otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.devel</otherArchive>
- </otherArchives>
- </mailingList>
+ <mailingList>
+ <name>log4cxx-user : log4cxx usage</name>
+ <subscribe>[EMAIL PROTECTED]</subscribe>
+ <unsubscribe>[EMAIL PROTECTED]</unsubscribe>
+ <post>[EMAIL PROTECTED]</post>
+
<archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-user/</archive>
+ <otherArchives>
+ <otherArchive>http://marc.info/?l=log4cxx-user</otherArchive>
+
<otherArchive>http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.user</otherArchive>
+ </otherArchives>
+ </mailingList>
+ <mailingList>
+ <name>log4cxx-dev : log4cxx development</name>
+ <subscribe>[EMAIL PROTECTED]</subscribe>
+ <unsubscribe>[EMAIL PROTECTED]</unsubscribe>
+ <post>[email protected]</post>
+
<archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/</archive>
+ <otherArchives>
+ <otherArchive>http://marc.info/?l=log4cxx-dev</otherArchive>
+
<otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.devel</otherArchive>
+ </otherArchives>
+ </mailingList>
</mailingLists>
<licenses>
<license>
@@ -119,7 +119,7 @@
<replaceregexp file="target/site/source-repository.html"
match="/tags/[^ "'<]*" replace="/trunk" flags="g"/>
<replaceregexp match="Generated on .* for " replace="Generated
for " flags="g">
<fileset dir="target/site/apidocs" includes="**/*.html"/>
- </replaceregexp>
+ </replaceregexp>
</tasks>
</configuration>
<goals>
@@ -188,6 +188,12 @@
</plugins>
</build>
<dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<reporting>
<excludeDefaults>true</excludeDefaults>
Modified: logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp
URL:
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp?rev=577550&r1=577549&r2=577550&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp Wed Sep 19 22:05:35 2007
@@ -74,14 +74,18 @@
// retrieve the IP address of this InetAddress.
LogString ipAddrString;
char *ipAddr;
- apr_sockaddr_ip_get(&ipAddr, currentAddr);
- Transcoder::decode(ipAddr, strlen(ipAddr), ipAddrString);
+ status = apr_sockaddr_ip_get(&ipAddr, currentAddr);
+ if (status == APR_SUCCESS) {
+ Transcoder::decode(ipAddr, strlen(ipAddr), ipAddrString);
+ }
// retrieve the host name of this InetAddress.
LogString hostNameString;
char *hostName;
- apr_getnameinfo(&hostName, currentAddr, 0);
- Transcoder::decode(hostName, strlen(hostName), hostNameString);
+ status = apr_getnameinfo(&hostName, currentAddr, 0);
+ if (status == APR_SUCCESS) {
+ Transcoder::decode(hostName, strlen(hostName), hostNameString);
+ }
result.push_back(new InetAddress(hostNameString, ipAddrString));
currentAddr = currentAddr->next;
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/inetaddresstestcase.cpp
URL:
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/inetaddresstestcase.cpp?rev=577550&r1=577549&r2=577550&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/inetaddresstestcase.cpp
(original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/inetaddresstestcase.cpp Wed Sep
19 22:05:35 2007
@@ -29,7 +29,7 @@
CPPUNIT_TEST(testByNameLocal);
CPPUNIT_TEST(testAllByNameLocal);
CPPUNIT_TEST_EXCEPTION(testUnknownHost, UnknownHostException);
-// CPPUNIT_TEST(testByNameRemote);
+ CPPUNIT_TEST(testUnreachable);
CPPUNIT_TEST_SUITE_END();
public:
@@ -68,20 +68,18 @@
* Tests the UnknownHostException.
*/
void testUnknownHost() {
- InetAddressPtr addr =
InetAddress::getByName(LOG4CXX_STR("unknown.host.local"));
+ InetAddressPtr addr =
InetAddress::getByName(LOG4CXX_STR("unknown.invalid"));
}
+
+ /**
+ * Tests an (likely) unreachable address.
+ */
+ void testUnreachable() {
+ InetAddressPtr
addr(InetAddress::getByName(LOG4CXX_STR("192.168.10.254")));
+ LogString addrStr(addr->toString());
+ CPPUNIT_ASSERT_EQUAL(addrStr.size() - 15,
addrStr.find(LOG4CXX_STR("/192.168.10.254")));
+ }
- /**
- * Tests resolving a remote host name.
- * This test is usually disabled in the test suite because it
- * probably produces volatile data.
- */
- void testByNameRemote() {
- InetAddressPtr addr =
InetAddress::getByName(LOG4CXX_STR("www.apache.org"));
-
- CPPUNIT_ASSERT(addr->getHostAddress() ==
LOG4CXX_STR("209.237.227.195"));
- CPPUNIT_ASSERT(addr->getHostName() ==
LOG4CXX_STR("minotaur-2.apache.org"));
- }
};
Added:
logging/log4cxx/trunk/src/test/java/org/apache/logging/log4cxx/helpers/InetAddressTestCase.java
URL:
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/java/org/apache/logging/log4cxx/helpers/InetAddressTestCase.java?rev=577550&view=auto
==============================================================================
---
logging/log4cxx/trunk/src/test/java/org/apache/logging/log4cxx/helpers/InetAddressTestCase.java
(added)
+++
logging/log4cxx/trunk/src/test/java/org/apache/logging/log4cxx/helpers/InetAddressTestCase.java
Wed Sep 19 22:05:35 2007
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.logging.log4cxx.helpers;
+
+import junit.framework.TestCase;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * Tests java.net.InetAddress to provide baseline
+ * for log4cxx's log4cxx::helpers::InetAddress.
+ */
+public class InetAddressTestCase extends TestCase
+{
+ /**
+ * Tests the InetAddress::getLocalHost() method.
+ */
+ public void testGetLocalHost() throws Exception {
+ InetAddress addr = InetAddress.getLocalHost();
+
+ assertFalse(addr.getHostName().length() == 0);
+ }
+
+ /**
+ * Tests the InetAddress::getByName() method with the
+ * "localhost" host name.
+ */
+ public void testByNameLocal() throws Exception {
+ InetAddress addr = InetAddress.getByName("localhost");
+
+ assertEquals("127.0.0.1", addr.getHostAddress());
+ assertFalse(addr.getHostName().length() == 0);
+ }
+
+ /**
+ * Tests the InetAddress::getAllByName() method with the
+ * "localhost" host name.
+ */
+ public void testAllByNameLocal() throws Exception {
+ InetAddress[] addr = InetAddress.getAllByName("localhost");
+ assertTrue(addr.length > 0);
+ }
+
+ /**
+ * Tests the UnknownHostException.
+ */
+ public void testUnknownHost() {
+ try {
+ InetAddress.getByName("unknown.invalid");
+ fail("Invalid address should result in UnknownHostException");
+ } catch(UnknownHostException ex) {
+ }
+ }
+
+ /**
+ * Tests an (likely) unreachable address.
+ */
+ public void testUnreachable() throws Exception {
+ InetAddress addr = InetAddress.getByName("192.168.10.254");
+ String addrStr = addr.toString();
+ assertEquals(addrStr.length() - 15, addrStr.indexOf("/192.168.10.254"));
+ }
+}
+