Commit Graph

35 Commits

Author SHA1 Message Date
Chia-chi Yeh
2dd9134c6b SIP: push the logic of finding local address down to SipSessionGroup.
This allows different accounts binding on different IP addresses,
such as one on IPv4 and another on IPv6.

Bug: 4169057
Change-Id: I0bb36669394c281330091673fa338adea8f782cd
2012-04-04 13:04:26 -07:00
Chia-chi Yeh
c2bd6162ed SipService: grab Wi-Fi lock only when necessary.
Change-Id: Ie432049156e70b6748426b959b653f21bfc504a1
2011-12-28 15:11:04 -08:00
Chia-chi Yeh
cb6ee06f62 SIP: turn off verbose logs.
Bug: 5616713
Change-Id: Iaf2e6878731d10d7f4f2a7cd8af71f4517780642
2011-11-18 16:57:21 -08:00
Chia-chi Yeh
ee59e6a9fc SipService: handle connectivity changes correctly.
This patch assumes that for the same network type,
there MUST be a DISCONNECTED between two CONNECTEDs.
Also removes the Wi-Fi scanning since the framework
already handles this when a WifiLock is held.

Bug: 4283795
Change-Id: I08481e70c651cffcbb516c8cc6584c919078fa4f
2011-09-30 16:46:30 -07:00
Chia-chi Yeh
d17b6d5266 SIP: fix keep-alive measurement and increase the timeout.
Bug: 5226511
Change-Id: I1283790581496b1ff4e583a8d9379cdc39f78c20
2011-09-13 03:02:30 -07:00
Hung-ying Tyan
9edfa10757 Keep last known keepalive interval to avoid duplicate effort.
The current implementation always starts with default minimum interval when
the measurement process starts. By keeping last known good interval, we can
save the time in re-measurement.

Change-Id: I8f1720acafaa7e101855fe0c66d5c7b0e578e0d7
2011-07-01 21:20:36 +08:00
Hung-ying Tyan
f89654dd28 Do not hold wifi lock when SIP is also available over mobile network.
Bug: 3111564
Change-Id: Ifc76e5c378d620e40ce4adf6ffa20807e9750fdb
2011-07-01 19:25:46 +08:00
Hung-ying Tyan
129d0b08fd Make NAT port timeout measurement more flexible.
In two ways:
(1) When there's a session timeout, restart the measurement at a later time
    instead of just stalling.
(2) When there's a port change, do not re-measure the interval if the current
    interval works well in the past. We keep success count and decrement it
    by half when there's a port change. When the count is below a threshold,
    we restart the measurement process.

Change-Id: I7256464435a5e2d2a239bfccaa004e9ceb1d9ce5
2011-06-30 14:37:24 +08:00
Hung-ying Tyan
e65f3a896f Restart NAT port timeout measurement when keepalive fails and other fixes
Misc keepalive fixes including:
+ Restart NAT port timeout measurement when keepalive fails. The max interval
  is set to the current keepalive interval.
+ When exception occurs during sending a keepalive, restarts registration.
+ When exception occurs during measurement, retry for a limited times before
  giving up.

Change-Id: I7aa787a5ec7c4c9b4334aa1017371d9049b3520c
2011-06-24 15:28:15 +08:00
Hung-ying Tyan
12750701d0 Keep the keepalive process going after NAT port is changed.
This is a regression from the CL that makes the keep-alive process a reusable
component.

Change-Id: I1d580588e9e303c532bf620056fc0fe88a2fdcda
2011-06-23 18:23:09 +08:00
Hung-ying Tyan
4a267a9158 Move the keepalive process to SipSessionImpl and make it reusable.
Reuse the new component in the original keepalive process and the NAT port
mapping timeout measurement process.

This is the foundation for fixing the following bug.

Bug: 3464181

Change-Id: If7e951c000503fa64843942ad062c4d853e20c8d
2011-06-23 11:41:37 +08:00
Hung-ying Tyan
5621554033 Move WakeupTimer out of SipService.
This is to prepare to move keepalive process to SipSessionGroup before fixing
the following bug.
Bug: 3464181

Change-Id: I57d8f6effad76706b5a76e1269c53d558db88ae4
2011-06-14 17:46:48 +08:00
Chung-yih Wang
bb0a989c17 Add KeepAlive Interval Measurement.
Change-Id: Id5ea2fcfa0bcd45198e773a5842d39eacc8ae400
2011-06-09 18:19:07 +08:00
Hung-ying Tyan
f46013b672 Merge "Merge "SipService: registers broadcast receivers on demand."" into honeycomb 2011-01-18 02:25:52 -08:00
Hung-ying Tyan
e9b5407727 Merge "SipService: registers broadcast receivers on demand."
The previous implementation registers receivers when SipService starts up.
If the user doesn't use SIP at all, SipService will still process connecivity
and wifi state change events, which involves holding wake lock and thus
consumes power unnecessarily.

With this CL, SipService is completely idle if the user doesn't use SIP at all.
It registers receivers only when at least one account is opened.

Bug: 3326998
Change-Id: Idea43747f8204b0ccad3fc05a1b1c0b29c9b2557
2011-01-18 16:55:44 +08:00
Hung-ying Tyan
40f2cacbc9 Merge "SipService: release wake lock for cancelled tasks."
Bug: 3327004
Change-Id: Ice47f973b5f2969f26eaa83a3e4795b2e153ba8b
2011-01-18 16:50:56 +08:00
Hung-ying Tyan
262cdfca7a Correct SipService.isOpened() implementation.
Make it return true for all existing accounts.
Rename mOpened to mOpenedToReceiveCalls to make it less confusing.

Bug: 3155849
Change-Id: I327f411bf76afd73434ad1fa2ffef3db1e35d778
2010-11-02 15:17:50 +08:00
Hung-ying Tyan
60c45d0269 Clean up pending sessions on incoming call in SipService
Bug: 3122186
Change-Id: I25c9aa19d138f6940a29025d54e7bc2ffb7daa29
2010-10-22 09:01:49 +08:00
Chung-yih Wang
4944fdd771 Periodically scan wifi when wifi is not connected and wifi lock is
grabbed in SipService.

bug: http://b/3077454
Change-Id: I153974325c29e0f927c8eb7fdbc4725aaf10087d
2010-10-19 14:09:30 -07:00
Hung-ying Tyan
0a6e717fb6 Handle dialing a SIP call to self.
Reply BUSY HERE response so server may redirect the call to the voice mailbox.

http://b/issue?id=3103072
http://b/issue?id=3109479

Change-Id: I81f5dd59ad87298dd9dda87084538ee460eabba8
2010-10-19 14:00:11 -07:00
Joe Onorato
431bb22695 Reduce logging.
Remember, the system and main logs are
    - Shared resources
    - Primarily for recording problems
    - To be used only for large grained events during normal operation

Bug: 3104855
Change-Id: I136fbd101917dcbc8ebc3f96f276426b48bde7b7
2010-10-19 15:08:05 -04:00
Hung-ying Tyan
28f63c0689 SipService: add wake lock for incoming INVITE packets.
+ Keep the wake lock for 500ms. (Some measurements on N1 indicate 160~180ms
  needed to bring up InCallScreen but since INVITE doesn't come in frequently
  we can be more generous just to be safe.)
+ Move MyWakeupLock out of SipService so SipSessionGroup can use it without
  awkward inter-dependency with SipService.
  + Add acquire(int timeout) to be used to create the "timed" wake lock.

http://b/issue?id=3081828

Change-Id: Iffd1d78d1a5cae9f795252ada75310917095204d
2010-10-15 09:25:17 +08:00
Hung-ying Tyan
bd57eeafe0 SipService: add wake lock for multiple components.
+ Add MyWakeLock to maintain a global wake lock for multiple components.
  + Use a Set to store components that want to hold the lock.
  + When the first component enters the set, we grab the global wake lock.
  + When the set becomes empty, we release the global lock.
  + In places like no account being opened to receive calls, we reset the
    wake lock just to be safe from possible leakage.
+ Make MyExecutor aware of the wake lock. It will grab the wake lock on
  behalf of the task so that tasks don't need to worry about the lock.
  + Connectivity receiver is modified to be executed in MyExecutor.
  + WakeupTimer handler is already protected by AlarmManager's wake lock but
    all the timeout handlers that register themselves to the WakeupTimer are
    to be executed in MyExecutor to be protected by the wake lock.
  + Remove unnecessary code in the Keepalive and registration processes. Since
    both processes are executed in MyExecutor submitted by the WakeupTimer (as
    they are timeout handlers registered to the WakeupTimer), they don't need
    to add themselves to MyExecutor explicitly in their run() callbacks.
+ Make the keepalive process wait for at most 3 seconds instead of forever for
  server response. It could cause the wake lock to be held longer than necessary
  and is a potential cause for ANR.

http://b/issue?id=3081828

Related bug:
http://b/issue?id=3087153

Change-Id: Idee0ddb837e67daa0d5092c012bb242bd7c18431
2010-10-14 16:54:47 +08:00
Hung-ying Tyan
4f8fd10f76 Make SipService listen to WIFI state change events.
+ Grab a WIFI lock if any account is opened to receive calls and WIFI is enabled
+ Release the WIFI lock if no account is opened to receive calls or WIFI is
  disabled
+ Remove screen on/off event receiver

http://b/issue?id=3077454

Change-Id: Ifdf60a850bcf4106c75ec1e7563b26d8b33d7e92
2010-10-13 17:11:58 +08:00
Hung-ying Tyan
d6fc979edb SipService: mScreenOn is flipped to wrong value.
http://b/issue?id=3077454

Change-Id: I23b6f70730074689b939e449c2c202ce8ffb586f
2010-10-13 10:25:07 +08:00
Hung-ying Tyan
685b61b711 SipService: fix a missing switch-case break.
Change-Id: I638eecd8000293d4cb37b3595c02ca33df4924eb
2010-10-12 10:46:29 +08:00
Chung-yih Wang
c7fda188ae Do not release the wifi lock if the screen is off.
We need to be able to receive calls if the device is able to
reassociate with any AP later on.

Change-Id: Ib7aafb98386bf250ed9b5ec0a5b519594efa1649
2010-10-09 08:37:40 +08:00
Hung-ying Tyan
aa562ffdb8 SipService: add permission check for using API
Change-Id: Ifd85ba07f1b913011cb3e80e5027c67bfe3db280
2010-10-08 11:57:18 +08:00
Hung-ying Tyan
9db99a4dc1 Make SipService broadcast SIP_SERVICE_UP when it's up.
http://b/issue?id=3062010

Change-Id: I13419fa3a8fdfba1977260f703e4dcaa42a6606c
2010-10-07 09:15:25 +08:00
Hung-ying Tyan
ee8a884f35 SIP: Fix busy authentication loop.
Add a retry count and give up after two attempts.
Also stop auto registration when server is unreachable.
And rename onError() to restartLater() for better readability.

http://b/issue?id=3066573

Change-Id: Icfa65c58546a1e2bf8e59e29584a3926c53c479b
2010-10-07 07:04:46 +08:00
Hung-ying Tyan
323d3671ac SipService: supply PendingIntent when open a profile.
The SipService used to take an action string and broadcasts an intent with
that action string when an incoming call is received. The design is not safe
(as the intent may be sniffed) and inflexible (can only received by
BroadcastReceiver). Now we use PendingIntent to fix all these.

Companion CL: https://android-git.corp.google.com/g/#change,71800

Change-Id: Id12e5c1cf9321edafb171494932cd936eae10b6e
2010-10-05 10:13:25 +08:00
Hung-ying Tyan
b031957d52 SipService: turn off verbose logging
Change-Id: I264662ba17d215d532f58b6ee793e569fe67c334
2010-10-01 07:09:30 +08:00
Hung-ying Tyan
6a53489ae5 SipService: add UID check.
Only allow creator or radio user to access profiles.

Change-Id: I548938f117926bcc878419142d1b5d818a4e70df
2010-09-30 12:40:11 +08:00
Hung-ying Tyan
fb3a98b1d8 SIP: misc fixes.
+ Fix keepalive timer event leak due to the race between stopping timer and
  the async'ed timeout handler
+ SipSessionImpl: set state before handling an event to ensure we get correct
  state when some error occurs during handling the event.
+ Fix potential NPE in SipManager.ListenerRelay.getUri().

Change-Id: I021ee34f83059fd4fbb64b30bea427a5462aa51b
2010-09-30 08:10:17 +08:00
Hung-ying Tyan
7e54ef71db Move SipService out of SystemServer to phone process.
Companion CL: https://android-git/g/#change,70187
http://b/issue?id=2998069

Change-Id: I90923ac522ef363a4e04292f652d413c5a1526ad
2010-09-28 05:19:35 +08:00