paulhsu / csipsimple

Automatically exported from code.google.com/p/csipsimple
1 stars 1 forks source link

Account registration issue-the sip account is not registering on some of the android devices #1994

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
The user is not able to register on some of the android devices.
the request timeout messege is shown even if the internet connection is working 
properly.
I tried to register a sip account through csipsimple on HTC desire android 
firmware version 2.2 but it failed everytime.

What steps will reproduce the problem?
1.try to add account
2.new basic account
3.enter each detail

What is the expected output? What do you see instead?

expected output:- should show registered
but failed to do so
What version of the product are you using? On what operating system?
Android version 2.2
htc desire

Please provide any additional information below.

Original issue reported on code.google.com by borntode...@gmail.com on 24 Sep 2012 at 9:07

GoogleCodeExporter commented 9 years ago
Thanks for the feedback

What is the version of the application (one from android market? 0.04-04?) or a 
nightly build version?

Also, when you say that "internet connection" is working properly. By "internet 
connection" do you mean web browsing with http protocol?
SIP protocol is a different one that operates on different ports. 
Some mobile carrier/ wifi hotspot block these port to prevent you from doing 
voice over IP on their network.
Solution is to ask them to unlock it if you can or to encrypt sip connection / 
change port if the sip provider support it.

Original comment by r3gis...@gmail.com on 27 Sep 2012 at 9:00

GoogleCodeExporter commented 9 years ago
Sir,
Thanks for your reply
I am using a downloaded apk version which is available on code.google.com
The link from where I downloaded is 
http://csipsimple.googlecode.com/files/CSipSimple-0.04-01.apk

I checked http connection working fine.I used wifi connection for internet 
access.
Plz help me how I can check that my device is not blocking any sip port.

Original comment by borntode...@gmail.com on 28 Sep 2012 at 7:12

GoogleCodeExporter commented 9 years ago
Can you try with this version :
http://nightlies.csipsimple.com/stable/0.04-04/CSipSimple-0.04-04-trunk.apk

The google code download section is not up to date.

Original comment by r3gis...@gmail.com on 28 Sep 2012 at 7:50

GoogleCodeExporter commented 9 years ago
I tried this version the issue is still there 
When I try to add a basic account, The status 
changes fromm registering ... to 
Error while registering -Request Timeout.
I have also builded the code given on this site
but the result is same. All stuff is working fine 
except that the app is not registering on some devices
I already tried the app on the motorola defy(android 2.1)
and HTC Sensation XL(android version 2.3.5) on both registration failed.

The app is registering on my htc desire(android version 2.3.1) smartphone.

Original comment by borntode...@gmail.com on 28 Sep 2012 at 9:35

GoogleCodeExporter commented 9 years ago
is there any kind of port conflict which is causing the app not to register.

Original comment by borntode...@gmail.com on 3 Oct 2012 at 6:35

GoogleCodeExporter commented 9 years ago
Normally if port conflicts there is an error before trying to register (when it 
tries to bind the port locally). By default the app uses random free local port 
(setting 0) for udp and tcp.

BTW, are you connecting using UDP or TCP? Some networks has UDP packet size 
limitation. Would be very low if blocking at register for your network but 
could be interesting to check if activating "Compact SIP" in network settings 
doesn't help.

Else, another difference that can appear from one device to another is the 
"User-agent". By default it's CSipSimple + some information about device 
codename (as nknown by the device itself) and the android version.
Maybe the sip server on the other side get hard time to decode this user agent 
(for example if contains space or other chars not well supported by server).
To try to change the User agent setting :
go in settings, press menu , Expert mode (if was not already done).
Then in network section there is the option to change useragent. Try something 
different from CSipSimple (it will not add device codename and android version 
in this case).

Original comment by r3gis...@gmail.com on 3 Oct 2012 at 10:36

GoogleCodeExporter commented 9 years ago
Sir,
I have tried both points mentioned by you regarding the registration issue.
User Agent and expert mode are not working as a solution for registration issue.

Additionally, I found some stuff which may be useful in providing the solution 
of this problem.

The registration problem arises whenever there is a network change in the 
device.
Such that if device is connected with 3g and wifi is switched on or off then 
either registration fails or call does not get connected.
This issue also arises when bluetooth or any other network media is turned on 
or off.

Whatever I got from reviewing the code from googlecode is that the pjsip stack 
,that CSipSimple app is using, stops whenever there is some network change due 
to which problem arises.
This may be due to the possible bug in checks applied on the code in order to 
check the network connection of the device.
Is there any solution by which we can check the accessibility of the client 
application to the sip server so that inspite of network change the app detect 
the direct accessibility to the server ...watsay

I am a newbie for android and java so requires ur kind support for solving this 
issue.
Thanks and Regards,
Anurag

Original comment by borntode...@gmail.com on 11 Oct 2012 at 9:58

GoogleCodeExporter commented 9 years ago
Ah !
It's very important information. I thought you had *always* no registration and 
were never able to register using csipsimple.

So I think I get the root reason with this information.

Your sip server probably support limited number of simultaneous registration.

When the network is lost, the app is not able to clear the pending registration 
on the server. So it increase number of registrations for your user on the 
server.

Then networks come back. The app tries to register. 
If server has limited number of possible registration and has no policy to drop 
older registration in this case, it will refuse the new registration.

It will work again when one of the slot of your previous registrations will 
timeout.

A clean solution would be to store in the app old registration and reinject it 
to the stack. Not easy. 
But, there is an existing workaround that tries to clear all registration when 
get an error on a registration and then try to re-register.
To activate this option, long press the account row, choose wizard and choose 
expert one.
And enable the option "Try to clean registrations" (not sure it works on a 
timeout error however... but if so you should raise the problem to your sip 
provider, they should refuse the registration with an actual error rather than 
just not replying to the request).

Another tweak you could do is to reduce the registration timeout/interval value 
so that registrations will expire quickly.

Original comment by r3gis...@gmail.com on 11 Oct 2012 at 10:36

GoogleCodeExporter commented 9 years ago
Tried this option too and also reduced registration timeout/interval value
unfortunately the status is "Error while registering-Request timeout"

I want to mention that on moto defy It was never registered.
On another device It got registered but on network change account becomes 
inactive and calls failed to connect.

My point is same as like urs either we can prevent the app to detect minor 
flaws in the network, only major network failure(when there is not a single 
network connection available such as 3g, wifi etc).
If device switches from from one to another then old registration can be re 
injected to the stack... 

Original comment by borntode...@gmail.com on 11 Oct 2012 at 12:03

GoogleCodeExporter commented 9 years ago
Also I want to mention that when app failed to register server does not get any 
registration request from the client side.
That means there is some issue in sending the registration request to server
may be app failed to reach server via sip protocol or something else...

Original comment by borntode...@gmail.com on 11 Oct 2012 at 12:05