diff --git a/doipclient/client.py b/doipclient/client.py index 7f35c38..0744772 100644 --- a/doipclient/client.py +++ b/doipclient/client.py @@ -616,13 +616,6 @@ def request_activation( ) ) continue - if result.logical_address != self._ecu_logical_address: - logger.warning( - "Routing Activation Response with invalid ECU logical address, multiple ECUs detected. Expected: 0x{:04X}, Got: 0x{:04X}. Ignoring".format( - self._ecu_logical_address, result.logical_address - ) - ) - continue return result if result: logger.warning( diff --git a/tests/test_client.py b/tests/test_client.py index 7ae9c4c..11c700d 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -49,7 +49,7 @@ for x in "02 fd 00 06 00 00 00 09 0e 01 00 01 10 00 00 00 00".split(" ") ] ) -invalid_ecu_logical_address_activation_response = bytearray( +gateway_activation_response = bytearray( [ int(x, 16) for x in "02 fd 00 06 00 00 00 09 0e 00 00 02 10 00 00 00 00".split(" ") @@ -488,30 +488,34 @@ def test_activation_ignores_mismatched_client_logical_address(mock_socket): assert result.response_code == 16 -def test_activation_ignores_mismatched_ecu_logical_address(mock_socket): +def test_activation_accepts_gateway_logical_address(mock_socket): sut = DoIPClient(test_ip, test_logical_address, activation_type=None) mock_socket.rx_queue = [ - invalid_ecu_logical_address_activation_response, + gateway_activation_response, successful_activation_response, ] result = sut.request_activation(0) assert result.client_logical_address == 0x0E00 - assert result.logical_address == 1 + assert result.logical_address == 2 assert result.response_code == 16 + assert len(mock_socket.rx_queue) == 1 + assert mock_socket.rx_queue[0] == successful_activation_response -def test_activation_times_out_with_only_mismatched_addresses(mock_socket, mocker): +def test_activation_ignores_mismatched_client_before_accepting_gateway(mock_socket): sut = DoIPClient(test_ip, test_logical_address, activation_type=None) - mocker.patch("doipclient.client.A_PROCESSING_TIME", 0.01) mock_socket.rx_queue = [ invalid_client_logical_address_activation_response, - invalid_ecu_logical_address_activation_response, + gateway_activation_response, ] - with pytest.raises(TimeoutError): - sut.request_activation(0) + result = sut.request_activation(0) + + assert result.client_logical_address == 0x0E00 + assert result.logical_address == 2 + assert result.response_code == 16 def test_activation_with_nack(mock_socket):