void UDPProxyCoordinator::ForwardingRequest::OrderRemainingServersToTry(void)
{
	DataStructures::Multilist<ML_ORDERED_LIST,UDPProxyCoordinator::ServerWithPing,unsigned short> swpList;
	swpList.SetSortOrder(true);
	if (sourceServerPings.GetSize()==0 && targetServerPings.GetSize()==0)
		return;

	DataStructures::DefaultIndexType idx;
	UDPProxyCoordinator::ServerWithPing swp;
	for (idx=0; idx < remainingServersToTry.GetSize(); idx++)
	{
		swp.serverAddress=remainingServersToTry[idx];
		swp.ping=0;
		if (sourceServerPings.GetSize())
			swp.ping+=(unsigned short) sourceServerPings[idx].ping;
		else
			swp.ping+=(unsigned short) DEFAULT_CLIENT_UNRESPONSIVE_PING_TIME;
		if (targetServerPings.GetSize())
			swp.ping+=(unsigned short) targetServerPings[idx].ping;
		else
			swp.ping+=(unsigned short) DEFAULT_CLIENT_UNRESPONSIVE_PING_TIME;
		swpList.Push(swp, swp.ping, _FILE_AND_LINE_);
	}
	remainingServersToTry.Clear(true, _FILE_AND_LINE_ );
	for (idx=0; idx < swpList.GetSize(); idx++)
	{
		remainingServersToTry.Push(swpList[idx].serverAddress, _FILE_AND_LINE_ );
	}
}