Author: norman
Date: Thu Jul 27 09:29:19 2006
New Revision: 426126
URL: http://svn.apache.org/viewvc?rev=426126&view=rev
Log:
Fix the Nullpointer on null sender if CheckValidSenderDomain is enabled. See
JAMES-580
Added:
james/server/trunk/src/test/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java
Modified:
james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidSenderDomainHandler.java
Modified:
james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidSenderDomainHandler.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidSenderDomainHandler.java?rev=426126&r1=426125&r2=426126&view=diff
==============================================================================
---
james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidSenderDomainHandler.java
(original)
+++
james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidSenderDomainHandler.java
Thu Jul 27 09:29:19 2006
@@ -90,6 +90,9 @@
String responseString = null;
MailAddress senderAddress = (MailAddress)
session.getState().get(SMTPSession.SENDER);
+ // null sender so return
+ if (senderAddress == null) return;
+
/**
* don't check if the ip address is allowed to relay. Only check if it
is set in the config.
*/
Added:
james/server/trunk/src/test/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java?rev=426126&view=auto
==============================================================================
---
james/server/trunk/src/test/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java
(added)
+++
james/server/trunk/src/test/org/apache/james/smtpserver/ValidSenderDomainHandlerTest.java
Thu Jul 27 09:29:19 2006
@@ -0,0 +1,113 @@
+/****************************************************************
+ * 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.james.smtpserver;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.james.services.DNSServer;
+import
org.apache.james.smtpserver.core.filter.fastfail.ValidSenderDomainHandler;
+import org.apache.james.test.mock.avalon.MockLogger;
+import org.apache.mailet.MailAddress;
+
+import junit.framework.TestCase;
+
+public class ValidSenderDomainHandlerTest extends TestCase {
+
+ private String response = null;
+
+ public void setUp() {
+ response = null;
+ }
+
+ private DNSServer setupDNSServer() {
+ DNSServer dns = new DNSServer(){
+
+ public Collection findMXRecords(String hostname) {
+ Collection mx = new ArrayList();
+ if (hostname.equals("test.james.apache.org")) {
+ mx.add("mail.james.apache.org");
+ }
+ return mx;
+ }
+
+ public Collection findTXTRecords(String hostname) {
+ throw new UnsupportedOperationException("Unimplemented mock
service");
+ }
+
+ public InetAddress[] getAllByName(String host) throws
UnknownHostException {
+ throw new UnsupportedOperationException("Unimplemented mock
service");
+ }
+
+ public InetAddress getByName(String host) throws
UnknownHostException {
+ throw new UnsupportedOperationException("Unimplemented mock
service");
+ }
+
+ public Iterator getSMTPHostAddresses(String domainName) {
+ throw new UnsupportedOperationException("Unimplemented mock
service");
+ }
+
+ };
+ return dns;
+ }
+
+ private SMTPSession setupMockedSession(final MailAddress sender) {
+ SMTPSession session = new AbstractSMTPSession() {
+ HashMap state = new HashMap();
+
+ public HashMap getState() {
+
+ state.put(SMTPSession.SENDER, sender);
+
+ return state;
+ }
+
+ public boolean isRelayingAllowed() {
+ return false;
+ }
+
+ public void writeResponse(String resp) {
+ response = resp;
+ }
+
+ };
+ return session;
+ }
+
+ private String getResponse() {
+ return response;
+ }
+
+ // Test for JAMES-580
+ public void testNullSender() {
+ ValidSenderDomainHandler handler = new ValidSenderDomainHandler();
+ ContainerUtil.enableLogging(handler, new MockLogger());
+
+ handler.setDnsServer(setupDNSServer());
+ handler.onCommand(setupMockedSession(null));
+
+ assertNull("Not blocked cause its a nullsender",getResponse());
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]