Loading src/java/com/android/internal/telephony/dataconnection/QosCallbackTracker.java +7 −3 Original line number Diff line number Diff line Loading @@ -207,15 +207,19 @@ public class QosCallbackTracker { for (final QosBearerFilter sessionFilter : qosBearerSession.getQosBearerFilterList()) { if (!sessionFilter.getLocalAddresses().isEmpty() && !sessionFilter.getRemoteAddresses().isEmpty()) { && !sessionFilter.getRemoteAddresses().isEmpty() && sessionFilter.getLocalPortRange().isValid() && sessionFilter.getRemotePortRange().isValid()) { if (matchesByRemoteAndLocalAddress(sessionFilter, filter)) { qosFilter = getFilterByPrecedence(qosFilter, sessionFilter); } } else if (!sessionFilter.getRemoteAddresses().isEmpty()) { } else if (!sessionFilter.getRemoteAddresses().isEmpty() && sessionFilter.getRemotePortRange().isValid()) { if (matchesByRemoteAddress(sessionFilter, filter)) { qosFilter = getFilterByPrecedence(qosFilter, sessionFilter); } } else if (!sessionFilter.getLocalAddresses().isEmpty()) { } else if (!sessionFilter.getLocalAddresses().isEmpty() && sessionFilter.getLocalPortRange().isValid()) { if (matchesByLocalAddress(sessionFilter, filter)) { qosFilter = getFilterByPrecedence(qosFilter, sessionFilter); } Loading tests/telephonytests/src/com/android/internal/telephony/dataconnection/QosCallbackTrackerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -457,5 +457,34 @@ public class QosCallbackTrackerTest extends TelephonyTest { verify(mDcNetworkAgent, times(1)).notifyQosSessionLost(eq(1), eq(1234), eq(1)); verify(mDcNetworkAgent, times(1)).notifyQosSessionLost(eq(2), eq(1235), eq(1)); } @Test @SmallTest public void testQosSessionWithInvalidPortRange() throws Exception { // Non-matching QosBearerFilter ArrayList<QosBearerFilter> qosFilters1 = new ArrayList<>(); qosFilters1.add(createIpv4QosFilter("155.55.55.55", new QosBearerFilter.PortRange(0,0), 45)); ArrayList<QosBearerSession> qosSessions = new ArrayList<>(); qosSessions.add(new QosBearerSession(1234, createEpsQos(5, 6, 7, 8), qosFilters1)); // Matching QosBearerFilter ArrayList<QosBearerFilter> qosFilters2 = new ArrayList<>(); qosFilters2.add(createIpv4QosFilter("122.22.22.22", new QosBearerFilter.PortRange(-1, 1), 45)); qosSessions.add(new QosBearerSession(1235, createEpsQos(5, 6, 7, 8), qosFilters2)); mQosCallbackTracker.updateSessions(qosSessions); // Add filter after updateSessions Filter filter = new Filter(new InetSocketAddress( InetAddresses.parseNumericAddress("122.22.22.22"), 2222)); mQosCallbackTracker.addFilter(1, filter); verify(mDcNetworkAgent, never()).notifyQosSessionAvailable(eq(1), eq(1235), any(EpsBearerQosSessionAttributes.class)); } } Loading
src/java/com/android/internal/telephony/dataconnection/QosCallbackTracker.java +7 −3 Original line number Diff line number Diff line Loading @@ -207,15 +207,19 @@ public class QosCallbackTracker { for (final QosBearerFilter sessionFilter : qosBearerSession.getQosBearerFilterList()) { if (!sessionFilter.getLocalAddresses().isEmpty() && !sessionFilter.getRemoteAddresses().isEmpty()) { && !sessionFilter.getRemoteAddresses().isEmpty() && sessionFilter.getLocalPortRange().isValid() && sessionFilter.getRemotePortRange().isValid()) { if (matchesByRemoteAndLocalAddress(sessionFilter, filter)) { qosFilter = getFilterByPrecedence(qosFilter, sessionFilter); } } else if (!sessionFilter.getRemoteAddresses().isEmpty()) { } else if (!sessionFilter.getRemoteAddresses().isEmpty() && sessionFilter.getRemotePortRange().isValid()) { if (matchesByRemoteAddress(sessionFilter, filter)) { qosFilter = getFilterByPrecedence(qosFilter, sessionFilter); } } else if (!sessionFilter.getLocalAddresses().isEmpty()) { } else if (!sessionFilter.getLocalAddresses().isEmpty() && sessionFilter.getLocalPortRange().isValid()) { if (matchesByLocalAddress(sessionFilter, filter)) { qosFilter = getFilterByPrecedence(qosFilter, sessionFilter); } Loading
tests/telephonytests/src/com/android/internal/telephony/dataconnection/QosCallbackTrackerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -457,5 +457,34 @@ public class QosCallbackTrackerTest extends TelephonyTest { verify(mDcNetworkAgent, times(1)).notifyQosSessionLost(eq(1), eq(1234), eq(1)); verify(mDcNetworkAgent, times(1)).notifyQosSessionLost(eq(2), eq(1235), eq(1)); } @Test @SmallTest public void testQosSessionWithInvalidPortRange() throws Exception { // Non-matching QosBearerFilter ArrayList<QosBearerFilter> qosFilters1 = new ArrayList<>(); qosFilters1.add(createIpv4QosFilter("155.55.55.55", new QosBearerFilter.PortRange(0,0), 45)); ArrayList<QosBearerSession> qosSessions = new ArrayList<>(); qosSessions.add(new QosBearerSession(1234, createEpsQos(5, 6, 7, 8), qosFilters1)); // Matching QosBearerFilter ArrayList<QosBearerFilter> qosFilters2 = new ArrayList<>(); qosFilters2.add(createIpv4QosFilter("122.22.22.22", new QosBearerFilter.PortRange(-1, 1), 45)); qosSessions.add(new QosBearerSession(1235, createEpsQos(5, 6, 7, 8), qosFilters2)); mQosCallbackTracker.updateSessions(qosSessions); // Add filter after updateSessions Filter filter = new Filter(new InetSocketAddress( InetAddresses.parseNumericAddress("122.22.22.22"), 2222)); mQosCallbackTracker.addFilter(1, filter); verify(mDcNetworkAgent, never()).notifyQosSessionAvailable(eq(1), eq(1235), any(EpsBearerQosSessionAttributes.class)); } }