diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llmessage/message.cpp | 22 | 
1 files changed, 20 insertions, 2 deletions
| diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index d5f362d780..4e6cda2880 100644 --- a/indra/llmessage/message.cpp +++ b/indra/llmessage/message.cpp @@ -2366,13 +2366,13 @@ void process_create_trusted_circuit(LLMessageSystem *msg, void **)  	{  		if( msg->getBlockUntrustedInterface() )  		{ -			LL_WARNS("Messaging") << "Refusing trust on public interface from host: " +			LL_WARNS("Messaging") << "Ignoring CreateTrustedCircuit on public interface from host: "  				<< msg->getSender() << llendl;  			return;  		}  		else  		{ -			LL_WARNS("Messaging") << "Establishing trust on public interface from host: " +			LL_WARNS("Messaging") << "Processing CreateTrustedCircuit on public interface from host: "  				<< msg->getSender() << llendl;  		}  	} @@ -2433,6 +2433,24 @@ void process_deny_trusted_circuit(LLMessageSystem *msg, void **)  		//	Don't respond to requests that use the same end point ID  		return;  	} +	 +	U32 untrusted_interface = msg->getUntrustedInterface().getAddress(); +	U32 last_interface = msg->getReceivingInterface().getAddress(); +	if ( ( untrusted_interface != INVALID_HOST_IP_ADDRESS ) && ( untrusted_interface == last_interface ) ) +	{ +		if( msg->getBlockUntrustedInterface() ) +		{ +			LL_WARNS("Messaging") << "Ignoring DenyTrustedCircuit on public interface from host: " +				<< msg->getSender() << llendl; +			return; +		} +		else +		{ +			LL_WARNS("Messaging") << "Processing DenyTrustedCircuit on public interface from host: " +				<< msg->getSender() << llendl; +		} +	} +  	// Assume that we require trust to proceed, so resend.  	// This catches the case where a circuit that was trusted | 
