Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb0f9717 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

NetworkCapabilities needs UID to be satisfied.

A recently added NetworkCapabilities feature expects that a
NetworkRequest defines a real UID in order for it to be satisfied
by a VPN-based network.

So when creating our JobStatus inside the system (either from a new
external request, or from a persisted job on disk), splice in the
source UID of the job, so that VPNs start matching.

Test: bit CtsJobSchedulerTestCases:*
Bug: 72765718, 73418534
Change-Id: Id611a98fee8f53cea92f7a22ec02f7f6d8a4c534
parent f6669931
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -302,7 +302,6 @@ public final class JobStatus {
        this.numFailures = numFailures;

        int requiredConstraints = job.getConstraintFlags();

        if (job.getRequiredNetwork() != null) {
            requiredConstraints |= CONSTRAINT_CONNECTIVITY;
        }
@@ -323,6 +322,13 @@ public final class JobStatus {
        mInternalFlags = internalFlags;

        updateEstimatedNetworkBytesLocked();

        if (job.getRequiredNetwork() != null) {
            // Later, when we check if a given network satisfies the required
            // network, we need to know the UID that is requesting it, so push
            // our source UID into place.
            job.getRequiredNetwork().networkCapabilities.setSingleUid(this.sourceUid);
        }
    }

    /** Copy constructor: used specifically when cloning JobStatus objects for persistence,