193 Commits

Author SHA1 Message Date
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
Chia-chi Yeh
54eabd6c92 SIP: avoid extreme small values in Min-Expires headers.
If the expiry time cannot be found in Contact header or Expires
header, use the default value of 3600 seconds, which is specified
in RFC 3261.

Change-Id: I2607a398b96743614b01713cfd9b28f40386fac1
2011-09-06 13:06:08 -07:00
Chia-chi Yeh
5f760064e1 SIP: add the check for expiry time in Contact header.
There can be three expiry times in the same message header. We
choose the smaller value in Expires header and Contact header,
and then we obey the value defined in Min-Expires header. If
none of them is set, the default value is used.

Bug: 5178284

Change-Id: Ie9d4a48c93863e82e5197bb4a0db3f4fec56857c
2011-08-30 13:59:11 -07:00
Hung-ying Tyan
dc5bbe965f Handle SIP authentication response for BYE.
Bug: 5159669
Change-Id: I029684334500d4d0db176783084c9b7d1db87e40
2011-08-15 01:13:41 +08:00
Conley Owens
53ad2c7fe2 am 0793586b: am f8c1f129: am e1d27154: am f87743e7: Merge "Prevent NullPointerException cases while using SipService."
* commit '0793586bf8f4dce71d0b4d7ff2f212129b3f76fe':
  Prevent NullPointerException cases while using SipService.
2011-08-02 13:32:26 -07:00
Conley Owens
0793586bf8 am f8c1f129: am e1d27154: am f87743e7: Merge "Prevent NullPointerException cases while using SipService."
* commit 'f8c1f1298ac3ede518c8d29eeb6719746c6afaf0':
  Prevent NullPointerException cases while using SipService.
2011-08-02 13:30:51 -07:00
Masahiko Endo
25ccbb97ff Prevent NullPointerException cases while using SipService.
Some SipService methods may return null, in such cases like no Wi-Fi
connection. Added minimum check to prevent NullPointerExceptions.

Change-Id: Ia7fae57ee893f2564cbfdedb6dc614938ab60ff7
Signed-off-by: Masahiko Endo <masahiko.endo@gmail.com>
2011-08-01 16:24:59 +09:00
repo sync
307f15faaf Add REFER handling.
Handle REFER requests including REFER with Replaces header.

bug:4958680
Change-Id: I96df95097b78bed67ab8abd309a1e57a45c6bc2f
2011-07-13 04:12:28 +08:00
Hung-ying Tyan
3eeb1a98f9 Merge "Keep last known keepalive interval to avoid duplicate effort." 2011-07-04 20:37:33 -07:00
Hung-ying Tyan
9324e04dcf Merge "Do not hold wifi lock when SIP is also available over mobile network." 2011-07-03 20:01:55 -07:00
Hung-ying Tyan
f8c34ad3ef Merge "Do not keep alive for re-established call." 2011-07-03 19:53:35 -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
8ba4566c01 Do not keep alive for re-established call.
Only need to keep alive for caller in a newly established call.

Change-Id: I36f9d9499c806c8701e3b78555de399b00593be8
2011-07-01 20:26:48 +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
a6cec8feed Synchronize SipWakeupTimer.onReceive()
to fix the race of two threads that change mPendingIntent; one assigns a new one
and the other nullifies it.

Change-Id: I5e01f83ea1ac437811d2073839adef9bd0a30ec9
2011-06-30 18:17:27 +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
99705b52ec Record external IP and port from SIP responses
and use them to create the contact header when sending OK response for INVITE.

Bug: 3461707
Change-Id: I5b254618f4920cf10a1460631bcd336778f344ec
2011-06-28 20:05:53 +08:00
repo sync
2093561a58 Support INVITE w/o SDP.
bug:3326873

Change-Id: Ie29d2c61b237fee2d8637f4ba3d293a22469cced
2011-06-28 19:45:10 +08:00
Hung-ying Tyan
233718c3c5 Start keepalive process for the caller of a SIP call
so that the callee can send signals (on-hold or bye) back to the caller.
Without the keepalive, the NAT port for the caller will be timed out during the
call. And the signals will be dropped by the NAT device.

Change-Id: I21848d73469045b2ed9e7281556ab184c594c362
2011-06-27 19:33:24 +08:00
repo sync
1aceda35cc Support Invite w/ Replaces request.
bug:3326870
Change-Id: Idbfbe7e3cc6ba83874d42bfb7d149866f454e70a
2011-06-27 16:20:28 +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
4af085ff26 Execute all the due wakeup events in SipWakeupTimer.
Events are sorted by periods. So events of larger periods may have trigger
time (i.e., when the event should be processed) earlier than the ones of smaller
periods. So need to scan the whole queue looking for due events. The scan takes
O(n) time but we expect the queue size to be small.

Change-Id: I08bd3bd9d4bb8decb78f3c91c943396463ca023a
2011-06-23 19:23:13 +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
ac320b2245 Merge "Move WakeupTimer out of SipService." 2011-06-15 03:17:50 -07: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
repo sync
c133781723 Fix the issue of onNetwork in UI thread.
bug:458435

This will temporarily start a thread for answering calls, we are
going to add a handler thread to handle this soon.

Change-Id: I9079038d671e1b1631c6e663fc2c3de297d97428
2011-06-13 17:46:41 +08:00
Chung-yih Wang
bb0a989c17 Add KeepAlive Interval Measurement.
Change-Id: Id5ea2fcfa0bcd45198e773a5842d39eacc8ae400
2011-06-09 18:19:07 +08:00
Scott Main
d81214dae4 am a7a9c4cb: am 46524f83: Merge "docs: add package description for RTP" into honeycomb-mr1
* commit 'a7a9c4cbbc2315a59ad27b43c83c66e272dcc2f2':
  docs: add package description for RTP
2011-05-05 18:02:47 -07:00
Scott Main
de9acb76d9 docs: add package description for RTP
Change-Id: I02c181a48101be288fb4aabf497f573f00038f90
2011-05-05 17:32:01 -07:00
Brad Fitzpatrick
fae5e2894f am 6f67e7bf: am 2e383bc6: Merge "Making it possible to call SIP calls with special allowed chars."
* commit '6f67e7bf831147257e078dd72a22f2e43e009122':
  Making it possible to call SIP calls with special allowed chars.
2011-03-29 08:45:30 -07:00
Magnus Strandberg
b5c72ead01 Making it possible to call SIP calls with special allowed chars.
Since String.replaceFirst uses regex and since SIP user names are
allowed to include regex charaters such as '+', the code must
fist convert the string to a literal pattern String before using
replaceFirst method.

Change-Id: I25eac852bd620724ca1c5b2befc023af9dae3c1a
2011-03-22 08:03:58 +01:00
Chia-chi Yeh
6defd2d47e NEW_API: Unhide RTP APIs.
This change unhides RTP related classes including AudioCodec,
AudioGroup, AudioStream, and RtpStream. This allows developers
to control audio streams directly and also makes conference
calls possible with the combination of the public SIP APIs.

Change-Id: Idfd4edf65a1cbf3245ec2786fbc03b06438b0fb3
2011-03-08 05:59:09 +08:00
Chia-chi Yeh
c52f5b2ec5 RTP: update javadocs.
Change-Id: If600df0eb1e6135aed9f3b2eacfb6bc9ed5d78ff
2011-03-03 08:01:01 +08:00
Chung-yih Wang
89bc1fe73e Activate the wifi high perf. for sip calls.
bug:3487791

Change-Id: I7d8d146f8542cd7df387547c7ce3d5ded27f8e97
2011-02-25 10:21:37 +08:00
Chung-yih Wang
fcd0e50da5 Add rport argument for a reinvite request.
bug:3461707
Change-Id: I69a4f84dde3929c754c838fd12e624b774f44826
2011-02-21 11:53:58 +08:00
Chung-yih Wang
9e25df4463 Make SIP AuthName APIs public.
bug:3326867
Change-Id: I766e6e28f6ad3e84de2c9e24850d472ad00271cc
2011-02-17 15:06:08 +08:00
Hung-ying Tyan
14b6d0620b Merge changes Ib70e0cf2,I0691cd70 into gingerbread
* changes:
  SipService: registers broadcast receivers on demand.
  SipService: release wake lock for cancelled tasks.
2011-01-24 19:41:42 -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
Chung-yih Wang
0f7de88cb9 Merge "Add auth. username in SipProfile." from gingerbread.
bug:3326867
Change-Id: Ic67dd7d4858f28224e4f01ad8b65bcd3a3c15f10
2011-01-12 11:43:27 +08:00
Chung-yih Wang
f268a2f848 Add auth. username in SipProfile.
bug:3326867
Change-Id: I2a62c75fb3f5e9c6ec2e00b29396e93b0c183d9b
2011-01-07 15:21:54 +08:00
Hung-ying Tyan
f0bb1ce70f 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: Ib70e0cf2c808e0ebab4c3c43dcab5532d24e5eeb
2011-01-07 11:57:22 +08:00
Chia-chi Yeh
4bf82df2f0 Do not set back to AudioManager.MODE_NORMAL in SipAudioCall.
Change-Id: I8f68e01e5f8c73bb8afd44312cbfadb55aab4330
2011-01-06 15:51:45 +08:00
Hung-ying Tyan
0c01e6e060 SipService: release wake lock for cancelled tasks.
Bug: 3327004
Change-Id: I0691cd70edf61f815ecb0613aca85babd89f6cc4
2011-01-06 13:05:29 +08:00
Hung-ying Tyan
33808c6d24 am aec9a33f: am e0bd2688: Merge "Check if VoIP API is supported in SipManager." into gingerbread
* commit 'aec9a33f1cfc7c32690bc8e24aefaeb137ab9859':
  Check if VoIP API is supported in SipManager.
2010-12-22 11:35:14 -08:00
Hung-ying Tyan
5bd3782f24 Check if VoIP API is supported in SipManager.
This is to make SipManager.isVoipSupported() effective.
Also add NPE check now that we may return null SipAudioCall when VOIP is not
supported.

Bug: 3251016

Change-Id: Icd551123499f55eef190743b90980922893c4a13
2010-12-21 11:51:03 +08:00
Hung-ying Tyan
635b2b77b9 am d90bc225: am a936b256: Remove SIP realm/domain check
* commit 'd90bc225b9d6e4f8f69d984aa63062a7b20ac65c':
  Remove SIP realm/domain check
2010-12-20 11:33:23 -08:00