Commit graph

2,727 commits

Message SHA1
Merge \\\"Fix unsafe concurrent access in LegacyTypeTracker\\\" am: 02a0bce25a am: 5f8aae1831
am: 064d6efe21

Change-Id: I4986b4646220b9be53f8063f2d5a41a763011a96

Hugo Benichi   authored and   android-build-merger   commited 2016-07-12 13:26:15 +00:00
e34be01a79
Merge \\"Fix unsafe concurrent access in LegacyTypeTracker\\" am: 02a0bce25a
am: 5f8aae1831

Change-Id: I20a3426002ebe6f4db9de7edf7c4072d0a27dbdc

Hugo Benichi   authored and   android-build-merger   commited 2016-07-12 13:20:56 +00:00
064d6efe21
Merge \"Fix unsafe concurrent access in LegacyTypeTracker\"
am: 02a0bce25a

Change-Id: I928b2c6ef8e20e197425c214242287185a9daa06

Hugo Benichi   authored and   android-build-merger   commited 2016-07-12 13:15:41 +00:00
5f8aae1831
Merge "Fix unsafe concurrent access in LegacyTypeTracker"
Treehugger Robot   authored and   Gerrit Code Review   commited 2016-07-12 13:08:21 +00:00
02a0bce25a
Fix unsafe concurrent access in LegacyTypeTracker
This patch adds synchronization inside LegacyTypeTracker so that
getNetworkForType() can safely run concurrently with remove().

Without synchronization if remove() removes the last network for a
given type while getNetworkForType() runs for the same type, it is
possible that getNetworkForType tries to access the head of an empty
list, resulting in a runtime exception.

This issue was found by zoran.jovanovic@sonymobile.com who proposed a
fix in AOSP (Change-Id: Ia963662edb9d643790e8d9439e4dbdcac4c2187b).

This patch differs from the fix proposed by the bug reporter and tries
instead to do the minimum amount of locking to make getNetworkForType
safe.

Bug: 29030387

(cherry picked from commit 389633f8d2)

Change-Id: I915aac527fc8828b32bf35fee870add2dfb11d8d

Hugo Benichi   authored and   Lorenzo Colitti   commited 2016-07-12 21:56:40 +09:00
ea37259312
ConnectivityService dump: add apps blocked logs
am: d159fdd226

Change-Id: I50c87dc35ef219844a5337768ec2526aeff4f1ca

Hugo Benichi   authored and   android-build-merger   commited 2016-07-12 04:39:05 +00:00
111516c8d1
ConnectivityService dump: add apps blocked logs
This patch adds NetworkInfo BLOCKED/UNBLOCKED status of apps to
ConnectivityService's dump logs.

The BLOCKED or UNBLOCKED status of an app is logged with the app uid
when the app calls getActiveNetworkInfo().

Examples:
mNetworkInfoBlockingLogs (most recent first):
  07-11 11:04:43.139 - BLOCKED 10060
  07-11 11:04:39.056 - UNBLOCKED 10061
  07-11 11:04:38.851 - BLOCKED 10061

Bug: 29981766
Change-Id: I6e2fde446702b92b0964ed894409b5d733d8f8a7

Hugo Benichi   commited 2016-07-12 11:39:48 +09:00
d159fdd226
Support requesting async LinkProperties/NetworkCapabilities updates
am: 0c04b74781

Change-Id: Icc048323debbbe641941c5c0d993f4c9782c5d3e

Erik Kline   authored and   android-build-merger   commited 2016-07-11 11:01:42 +00:00
b2bdeca8e2
Basic IPv6 Router Advertisement daemon
am: 1a1cb0e914

Change-Id: I242eb8e932581a537a47f31e3f16c7e776da91cf

Erik Kline   authored and   android-build-merger   commited 2016-07-11 10:38:49 +00:00
78bf01826a
Support requesting async LinkProperties/NetworkCapabilities updates
Bug: 9580643
Change-Id: I1d7ba7645c20d7d53f6eef777dfce43727940f13

Erik Kline   commited 2016-07-11 19:17:41 +09:00
0c04b74781
Basic IPv6 Router Advertisement daemon
Bug: 9580643
Change-Id: Iebd4d1f694699ffd4daf7d71e9b9d8f49e9b632f

Erik Kline   commited 2016-07-11 18:37:25 +09:00
1a1cb0e914
Merge \"Rewrite lingering.\" into nyc-mr1-dev
am: 673bdd122b

Change-Id: I62d69f20101318b42d4d333b104dcf4f64dc1725

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-07 11:01:19 +00:00
1ddf62c2a3
Merge "Rewrite lingering." into nyc-mr1-dev
Lorenzo Colitti   authored and   Android (Google) Code Review   commited 2016-07-07 10:55:39 +00:00
673bdd122b
Merge \"ConnectivityManager: no double callback remove\" into nyc-mr1-dev
am: 0ecfb2fd34

Change-Id: Ib7b10c59c1f7c84ec78c7527fba8a6c9aa5b0c05

Hugo Benichi   authored and   android-build-merger   commited 2016-07-07 09:38:29 +00:00
bafb27388b
Merge "ConnectivityManager: no double callback remove" into nyc-mr1-dev
TreeHugger Robot   authored and   Android (Google) Code Review   commited 2016-07-07 09:33:35 +00:00
0ecfb2fd34
Merge \"Prepare to delete useless loop in handleReleaseNetworkRequest.\" into nyc-mr1-dev
am: ef9c83a171

Change-Id: I8cd95575e7758ee94417ec15e407f396434f4c04

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-07 07:40:46 +00:00
f035567f74
Merge "Prepare to delete useless loop in handleReleaseNetworkRequest." into nyc-mr1-dev
TreeHugger Robot   authored and   Android (Google) Code Review   commited 2016-07-07 07:33:07 +00:00
ef9c83a171
Rewrite lingering.
The two major changes here are:

- Move lingering out of NetworkMonitor. The fact that lingering
  is currently its own state in NetworkMonitor complicates the
  logic there: while a network is lingering it cannot be in any
  other state, we have to take care not to leave LingeringState
  for the wrong reason, etc.
- Instead of keeping a single per-network boolean to indicate
  whether a network is lingered or not, keep a linger timer for
  every request. This allows us to fix various corner-case bugs
  in lingering.

The changes in behaviour compared to the current code can be seen
in the unit test changes. Specifically:

1. Bug fix: when a network is lingered, and a request is added
   and removed to it, the existing code tears the network down
   immediately. The new code just sends another CALLBACK_LOSING
   and resumes lingering with the original timeout.
2. Bug fix: if cell is unvalidated and wifi comes up and
   validates before cell does (as might happen on boot), the
   existing code immediately tears down cell. The new code
   lingers cell, which is correct because unvalidated cell was
   the default network, so an app might have been using it.
3. Correctness improvement: always send CALLBACK_AVAILABLE for
   the new network before sending CALLBACK_LOSING. This was not
   really an issue in practice, because the usual flow is:
    - Network A is the default.
    - Network B connects, CALLBACK_AVAILABLE.
    - Network B validates, CALLBACK_LOSING.

Bug: 23113288
Change-Id: I2f1e779ff6eb869e62921a95aa9d356f380cf30a

Lorenzo Colitti   commited 2016-07-07 16:18:57 +09:00
79869eac2f
Prepare to delete useless loop in handleReleaseNetworkRequest.
As explained in the TODO, the loop serves no purpose since only
one network can be satisfying a given request at a time.

Instead of looping, look up the nai in the mNetworkForRequestId
array that exists for this purpose.

Keep the loop around with an Slog.wtf statement on it so we can
see if we ever hit it, and add a TODO to delete it if we don't.

Bug: 23113288
Change-Id: I173de4bd45c5a4169b7a062a981f2ecccaa44143

Lorenzo Colitti   commited 2016-07-07 14:50:12 +09:00
a68fb676e6
Merge "Merge \"Merge \\"Make registerDefaultNetwork work on metered networks.\\" into nyc-dev am: 33cdc4d136 -s ours\" into nyc-mr1-dev am: 6f93a6c2c3" into nyc-mr1-dev-plus-aosp
Android Build Merger (Role)   authored and   Android (Google) Code Review   commited 2016-07-07 01:33:11 +00:00
fb2ee33cea
Merge \\"Make registerDefaultNetwork work on metered networks.\\" into nyc-dev am: 33cdc4d136
am: 8fd1e19e45  -s ours

Change-Id: I71fcfb810a477f5bcc3d7642375c6ef56b747517

Pankaj Kanwar   authored and   android-build-merger   commited 2016-07-07 01:32:00 +00:00
da2688f449
Merge \"Merge \\"Make registerDefaultNetwork work on metered networks.\\" into nyc-dev am: 33cdc4d136 -s ours\" into nyc-mr1-dev
am: 6f93a6c2c3

Change-Id: I160e1a702a5e879da775ddf9e360ef5c3d206973

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-07 01:31:50 +00:00
cf7bdc07e2
Merge \"Make registerDefaultNetwork work on metered networks.\" into nyc-dev
am: 33cdc4d136  -s ours

Change-Id: Iacee53c01e7de163e677ab57bc2d7044f8aff952

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-07 01:24:58 +00:00
27ca325de9
ConnectivityManager: no double callback remove
This patch partially undoes ag/869831 (Change-Id:
Ia42ed7aefaebd8caf3eada8e42b6cb7a940d7647) so that ConnectivityManager
does not remove callbacks from its internal request-to-callback map at
unregistration, but instead let the singleton CallbackHandler do it when
receiving a CALLBACK_RELEASED from ConnectivityService.

ag/869831 was thought to fix b/26749700 that reported a callback leak
from sNetworkCallback, but a finer analysis of the code shows that
callbacks were correctly removed by the CallbackHandler before
ag/869831. There was therefore no callback leak.

Bug: 26749700
Bug: 28537383
Change-Id: I421d889d0e225c0e3d1eebea664f44a1cc0f3191

Hugo Benichi   commited 2016-07-07 09:44:02 +09:00
f778e2546f
Merge \"Make registerDefaultNetwork work on metered networks.\" into nyc-dev
am: 33cdc4d136

Change-Id: I0ad7b79f1af992dd556de5e17a6a1aae9c46e423

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-06 20:45:09 +00:00
8fd1e19e45
Merge \"Add test coverage for a bug in the lingering code.\" into nyc-mr1-dev
am: 833c839f0b

Change-Id: Ia09ba1e0a6e3ba9543a92ccf7f03f7a898f26fb1

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-05 03:44:29 +00:00
b2279bc09f
Merge "Add test coverage for a bug in the lingering code." into nyc-mr1-dev
TreeHugger Robot   authored and   Android (Google) Code Review   commited 2016-07-05 03:35:40 +00:00
833c839f0b
Merge \"Unbreak unregisterNetworkCallback.\" into nyc-mr1-dev
am: 0271c0d4ef

Change-Id: I35ee16554e17c503b1f5628629c2c0a48d85d399

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-05 02:19:18 +00:00
5a7cd3500d
Merge "Unbreak unregisterNetworkCallback." into nyc-mr1-dev
Lorenzo Colitti   authored and   Android (Google) Code Review   commited 2016-07-05 02:07:06 +00:00
0271c0d4ef
Unbreak unregisterNetworkCallback.
http://ag/1194313 broke unregisterNetworkCallback because the
system does not parcel the type of the request back to the app.
So when the app calls unregisterNetworkCallback, the
NetworkRequest that's passed in does not have a type and thus
doesn't match the request in mNetworkRequests.

Fix this by parceling over the type as well.

This was not caught by the unit test because the unit test all
runs in the same process with no parceling.

Bug: 23113288
Change-Id: I58b2ed651b9bf5cbdcca5b25c3ca24db53cffdf1

Lorenzo Colitti   commited 2016-07-05 01:59:49 +09:00
70964d3a18
Merge \"Annotate public methods in ConnectivityService.\" into nyc-mr1-dev
am: 50d08eec57

Change-Id: I065e2ceb351ea8af4310f6ef11f1af232fa2fc79

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-04 16:21:10 +00:00
c256234cbf
Merge "Annotate public methods in ConnectivityService." into nyc-mr1-dev
TreeHugger Robot   authored and   Android (Google) Code Review   commited 2016-07-04 16:07:33 +00:00
50d08eec57
Make registerDefaultNetwork work on metered networks.
am: 5c1bf510fb

Change-Id: I2d5edc273df22e5c787f227820c1ce956adfe42c

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-04 16:06:51 +00:00
302dff37cc
Make registerDefaultNetwork work on metered networks.
Bug: 29927488
Change-Id: I3b705c2ab0d1493546ffa5185bb5b07d5e25c897

Lorenzo Colitti   commited 2016-07-04 23:18:12 +09:00
5c1bf510fb
Add test coverage for a bug in the lingering code.
Bug: 23113288
Change-Id: I573ee5908b9d973931234eb7d2db8ea0aaa4b31e

Lorenzo Colitti   commited 2016-07-04 17:00:27 +09:00
b5b9c71870
Annotate public methods in ConnectivityService.
Ensure every public method is annotated with why it's public.
This can be either an @Override or @VisibleForTesting annotation
or a comment explaining why it's public.

Bug: 29927488
Change-Id: I3582aef7997dc0d723718ca5e3dd115647d22979

Lorenzo Colitti   commited 2016-07-04 12:58:29 +09:00
d645909273
Merge changes from topic \'networkrequest_private\' into nyc-mr1-dev
am: 0317e03dc3

Change-Id: Ia063c378bd32fdb056c0ecdc0f721d32e9fa49af

Lorenzo Colitti   authored and   android-build-merger   commited 2016-07-01 15:20:21 +00:00
9d1139ee06
Make the NetworkRequest list private to NetworkAgentInfo.
This allows us to keep track of how many live requests a network
is satisfying without having to count them every time.

Bug: 23113288
Change-Id: Ic4756676491e09071dbf80b7c48da3be028d68eb

Lorenzo Colitti   commited 2016-07-01 21:14:26 +09:00
99236d14e3
Move the request type from NetworkRequestInfo to NetworkRequest.
This will allow us to simplify code that deals with
NetworkRequests outside ConnectivityService.

Bug: 23113288
Change-Id: I9b3a859d0c68cad73d7f6baa4b584d13ffd2ae36

Lorenzo Colitti   commited 2016-07-01 20:15:19 +09:00
eafe85717c
Make registerDefaultNetwork work on metered networks.
Bug: 29927488
Change-Id: I3b705c2ab0d1493546ffa5185bb5b07d5e25c897

Lorenzo Colitti   commited 2016-07-01 04:42:58 +00:00
ecd8ec7141
Merge changes I65784f35,Ib6937335 into nyc-mr1-dev
am: 74f7f2ec0d

Change-Id: Iba950e7837d91f83a9c2bcd7fc8e7b1193038400

Lorenzo Colitti   authored and   android-build-merger   commited 2016-06-30 14:33:25 +00:00
d681873af9
Merge \\\"Changes for upgrade to OkHttp 2.7.5\\\" am: 5c3bebd673 am: 1f44659b2f
am: 6b473f7b67

Change-Id: I3a0dc1da2ee96d71c38cab727141efcb686627e1

Tobias Thierer   authored and   android-build-merger   commited 2016-06-30 13:04:52 +00:00
4b2e1aef96
Merge \"Changes for upgrade to OkHttp 2.7.5\"
am: 5c3bebd673

Change-Id: Id79249756929a61dca374f9f1d43d0ea9e6b1280

Tobias Thierer   authored and   android-build-merger   commited 2016-06-30 12:49:47 +00:00
1f44659b2f
Add detailed test coverage for lingering.
Bug: 23113288
Change-Id: I65784f3589378d97f3c824e600f21f361be8741e

Lorenzo Colitti   commited 2016-06-30 21:42:17 +09:00
2dfee89086
Merge "Changes for upgrade to OkHttp 2.7.5"
Tobias Thierer   authored and   Gerrit Code Review   commited 2016-06-30 12:35:03 +00:00
5c3bebd673
Add more test coverage for requests and callbacks.
1. Support multiple callbacks in TestNetworkCallback. This is
   necessary to test situations where multiple callbacks are
   generated by the same event (e.g., CALLBACK_LOSING on cell
   with CALLBACK_AVAILABLE on wifi when wifi connects), which is
   necessary to test callback order. So far this has not been
   covered because all callback testing was using per-network
   callbacks.
2. Add a benchmark test for registering NetworkRequests and for
   sending onAvailable and onLosing callbacks.

Bug: 23113288
Change-Id: Ib69373358ad766ab1bd989e864a5a51ef762c73c

Lorenzo Colitti   commited 2016-06-30 13:18:12 +09:00
6dcf2e24c5
Changes for upgrade to OkHttp 2.7.5
- Use com.android.okhttp.Dns in place of com.android.okhttp.internal.Network
 - Specify TimeUnit.MILLISECONDS for timeouts which 2.7.5 allows and
   brings us closer to 3+

Change-Id: I95b5d72a94ebe1389f7c2e8d95903aa1aadd944b

Tobias Thierer   commited 2016-06-29 17:41:32 +01:00
858e39459e
Adding tests for DnsEventListenerService
am: 8fe7f1e666

Change-Id: I498ad1303ff3c0fbc4517203ff8e6b931814562b

Hugo Benichi   authored and   android-build-merger   commited 2016-06-29 07:18:32 +00:00
07fca7f89a
Refactor IP connectivity event logging
am: be0c7651f6

Change-Id: I8de880edc4a8c7f12527218788cb44f263acb56f

Hugo Benichi   authored and   android-build-merger   commited 2016-06-29 07:18:28 +00:00
ca1f22591f
Adding tests for DnsEventListenerService
Bug: 29035129
Change-Id: Iaf0d9ec781da7a473b6f7d8623060ecde44b9cbd

Hugo Benichi   commited 2016-06-29 14:28:51 +09:00
8fe7f1e666