baresip / baresip-ios

Baresip for iOS
46 stars 33 forks source link

ua_init Error 49 #40

Closed kannanmaran closed 3 years ago

kannanmaran commented 3 years ago

Hello!!

In iOS when connected to wifi ua_init method returning 49 Error code but it's working fine in mobile data on the same device. let me know if you need any debug print. Kindly help me with this.

as mentioned in this issue, I have copied the route.h file in iOS SDK also

OsType: iOS Model: iPhone 8 Plus OsVersion: 14.4 Baresip v 1.1.0

`net_debug_log(): 36 - net_debug_log = --- Network debug --- Local IPv4: [E] en0|192.168.18.12 Local IPv6: [E] en0|fe80::ca9:5c79:32e4:bf56 net interfaces: lo0: 127.0.0.1 lo0: ::1 lo0: fe80::1 pdp_ip1: fe80::14bb:55f4:4c6b:2898 pdp_ip1: 2409:4032:6d06:c3d4:9e:2384:da50:a9dc pdp_ip1: 2409:4032:6d06:c3d4:7084:a35c:477:914e pdp_ip0: 26.60.29.192 pdp_ip0: fe80::8c2:2fa7:36a4:3ea8 pdp_ip0: 2409:4072:6d00:80aa:805:c8ae:9efc:f302 pdp_ip0: 2409:4072:6d00:80aa:8dd0:98b0:71c:8dd en0: fe80::ca9:5c79:32e4:bf56 en0: 192.168.18.12 awdl0: fe80::249e:93ff:fe0f:ed79 utun0: fe80::e914:9594:a020:2149 utun1: fe80::1aaa:fa59:469a:f52 ipsec2: fe80::fa95:eaff:fea3:a04c ipsec2: 2409:4032:6d06:c3d4:9e:2384:da50:a9dc ipsec3: fe80::fa95:eaff:fea3:a04c ipsec3: 2409:4032:6d06:c3d4:9e:2384:da50:a9dc llw0: fe80::249e:93ff:fe0f:ed79 DNS Servers from Config: (1) 0: 192.168.18.1:53

20:38:00 20-05-2021 void net_dns_debug_log(): 90 - net_dns_debug_log = DNS Servers from Config: (1) 0: 192.168.18.1:53

20:38:00 20-05-2021 void netif_debug_log(): 69 - net_if_debug -> net interfaces: lo0: 127.0.0.1 lo0: ::1 lo0: fe80::1 pdp_ip1: fe80::14bb:55f4:4c6b:2898 pdp_ip1: 2409:4032:6d06:c3d4:9e:2384:da50:a9dc pdp_ip1: 2409:4032:6d06:c3d4:7084:a35c:477:914e pdp_ip0: 26.60.29.192 pdp_ip0: fe80::8c2:2fa7:36a4:3ea8 pdp_ip0: 2409:4072:6d00:80aa:805:c8ae:9efc:f302 pdp_ip0: 2409:4072:6d00:80aa:8dd0:98b0:71c:8dd en0: fe80::ca9:5c79:32e4:bf56 en0: 192.168.18.12 awdl0: fe80::249e:93ff:fe0f:ed79 utun0: fe80::e914:9594:a020:2149 utun1: fe80::1aaa:fa59:469a:f52 ipsec2: fe80::fa95:eaff:fea3:a04c ipsec2: 2409:4032:6d06:c3d4:9e:2384:da50:a9dc ipsec3: fe80::fa95:eaff:fea3:a04c ipsec3: 2409:4032:6d06:c3d4:9e:2384:da50:a9dc llw0: fe80::249e:93ff:fe0f:ed79

20:38:00 20-05-2021 void netrt_debug_log(): 80 - net_rt_debug -> net routes: Destination Next Hop Iface Type 0.0.0.0/0 192.168.18.1 en0
0.0.0.0/0 26.60.29.192 pdp_ip0
1.1.1.1/0 192.168.18.1 en0
5.39.68.205/0 192.168.18.1 en0
5.39.85.119/0 192.168.18.1 en0
17.57.12.11/0 192.168.18.1 en0
17.57.145.116/0 26.60.29.192 pdp_ip0
17.57.145.116/0 192.168.18.1 en0
17.57.145.117/0 192.168.18.1 en0
17.110.234.77/0 192.168.18.1 en0
17.242.2.32/0 192.168.18.1 en0
17.242.184.25/0 192.168.18.1 en0
17.248.162.4/0 192.168.18.1 en0
17.248.162.5/0 192.168.18.1 en0
17.248.162.6/0 192.168.18.1 en0
17.248.162.8/0 192.168.18.1 en0
17.248.162.38/0 192.168.18.1 en0
17.248.162.68/0 192.168.18.1 en0
17.248.162.71/0 192.168.18.1

void net_conf_debug(): 47 - net_conf_debug -> SIP sip_listen
sip_certificate sip_cafile
sip_capath
sip_trans_def UDP sip_verify_server no sip_tos 160 Call call_local_timeout 120 call_max_calls 4 call_hold_other_calls yes Audio audio_path /share/baresip audio_player audiounit,nil audio_source , audio_alert audiounit,nil auplay_srate 48000 ausrc_srate 48000 auplay_channels 0 ausrc_channels 0 audio_level no Video video_source ,

video_source avformat,rtmp://127.0.0.1/app/foo

video_display , video_size "640x480" video_bitrate 1000000 video_fps 30.00 video_fullscreen yes videnc_format yuv420p AVT rtp_tos 184 rtp_video_tos 136 rtp_ports 1024-49152 rtp_bandwidth 0-0 rtcp_mux no jitter_buffer_type fixed jitter_buffer_delay 5-10 jitter_buffer_wish 0 rtp_stats no rtp_timeout 0 # in seconds Network net_interface

`

Thanks, Kannan

alfredh commented 3 years ago

can you please also share the full log ?

please lookup the error code 49 in the system documentation (iOS) and see what is means.

kannanmaran commented 3 years ago

can you please also share the full log?

please lookup the error code 49 in the system documentation (iOS) and see what is means.

Hello!! @alfredh Thanks for your reply.

it looks like a socket bind error as mentioned here I have tried the same app in a different network via wifi it was working fine. But this issue occurs in some wifi networks. and its works well in mobile data.

I have tried running baresip command from my terminal without any arguments (baresip) from my ubuntu machine on the same wifi network. got this below error. baresip v1.1.0 Copyright (C) 2010 - 2021 Alfred E. Heggestad et al. Local network address: IPv4=wlp2s0|192.168.100.6 IPv6=wlp2s0|fe80::734c:7f7f:5869:c919 tcp: sock_bind: bind: Invalid argument (af=10, [fe80::734c:7f7f:5869:c919]:0) ua: SIP Transport failed: Invalid argument ua: init failed (Invalid argument) ua: stop all (forced=1)

I found that af=10 is set in the above log, so I executed the baresip command with -4 argument (baresip -4). then baresip started working fine in my ubuntu machine in the same wifi network. In iOS, I have defined the same for af=AF_INET but still no luck same error.

can you please specify which log do you want to debug? below is the code am using

`-(void)startSip{

NSLog(@"Startig sip....");

//Private Lib path
NSArray *privatePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *privateDocumentsPath = [privatePaths objectAtIndex:0];

(void)sys_coredump_set(true);

char start_error[64] = "";
int err;
struct le *le;

err = libre_init();
if(err){
    NSLog(@"Error init libre %d", err);
    strcpy(start_error, "init_libre");
    [self stopBareSip:start_error];
    return;
}

mod_init();

conf_path_set([privateDocumentsPath UTF8String]);

err = conf_configure();
if(err){
    NSLog(@"Error to set config %d", err);
    strcpy(start_error, "conf_configure");
    [self stopBareSip:start_error];
    return;
}

NSString *ipv4_addr_str = [Utils getIPAddress:true];
NSArray* ipv4_arr = [ipv4_addr_str componentsSeparatedByString:@"@"];
NSString *ipv4interface = ipv4_arr[0];
NSString *ipv4_addr = ipv4_arr[1];

NSString *ipv6_addr_str = [Utils getIPAddress:false];
NSArray* ipv6_arr = [ipv6_addr_str componentsSeparatedByString:@"@"];
NSString *ipv6interface = ipv6_arr[0];
NSString *ipv6_addr = ipv6_arr[1];

NSLog(@"ipv4Inter = %@ ipv4 = %@, ipv6Inter = %@ ipv6 = ", ipv4interface, ipv4_addr, ipv6interface, ipv6_addr);

/*
 * Set the network interface before initializing the config
 */
if(![ipv4interface isEqualToString:@""]){
    struct config *theconf = conf_config();
    str_ncpy(theconf->net.ifname, [ipv4interface UTF8String], sizeof(theconf->net.ifname));
}

conf_config()->net.af = AF_INET;

err = baresip_init(conf_config());
if(err){
    NSLog(@"Baresip init Error %d", err);
    strcpy(start_error, "baresip_init");
    [self stopBareSip:start_error];
    return;
}

[self setNetworkAddress:ipv4_addr];
[self setNetworkAddress:ipv6_addr];

NSDictionary *dnsAdd = [self getDNSServers];
NSLog(@"dnsIpv4 = %@, dnsIpv6 = %@", [dnsAdd valueForKey:@"ipv4"], [dnsAdd valueForKey:@"ipv6"]);

log_level_set(0);
log_enable_debug(true);    
net_debug_log();
net_dns_debug_log();
netif_debug_log();
netrt_debug_log();
net_conf_debug();
uag_enable_sip_trace(true);

play_set_path(baresip_player(), [privateDocumentsPath UTF8String]);

NSString* bua = [NSString stringWithFormat:@" baresip v %s (ARCH / %s)", BARESIP_VERSION, OS];
NSLog(@"bua = %@", bua);
err = ua_init([bua UTF8String], 1, 1, 1);
if(err){
    **NSLog(@"Baresip ua_init Failed %d", err);**
    strcpy(start_error, "ua_init");
    [self stopBareSip:start_error];
    return;
}

uag_set_exit_handler(ua_exit_handler, NULL);

err = uag_event_register(ua_event_handler, NULL);
if(err){
    NSLog(@"Baresip uag_event_register Failed %d", err);
    strcpy(start_error, "uag_event_register");
    [self stopBareSip:start_error];
    return;
}

err = conf_modules();
if (err) {
    NSLog(@"Baresip conf_modules Failed %s", strerror(err));
    strcpy(start_error, "conf_modules");
    [self stopBareSip:start_error];
    return;
}

char ua_buf[32];
struct ua *ua;
for (le = list_head(uag_list()); le != NULL; le = le->next) {
    ua = le->data;
    sprintf(ua_buf, "%lu", (unsigned long) ua);

// NSString *uas = [NSString stringWithFormat:@"%s", ua_buf]; NSLog(@"adding UA for AoR %s/%s", account_aor(ua_account(ua)), ua_buf); ua_debug_log(ua); }

err = mqueue_alloc(&mq, mqueue_handler, NULL);
if (err) {
    NSLog(@"mqueue_alloc failed (%d)", err);
    strcpy(start_error, "mqueue_alloc");
    [self stopBareSip:start_error];
    return;
}

for (le = list_head(uag_list()); le != NULL; le = le->next)
    ua_print_status_log(le->data);

// Start the main loop.
NSLog(@"running main loop ...");
isLibStarted = YES;

err = re_main(signal_handler);
if (err) {
    NSLog(@"stopping UAs due to error: (%d)", err);
    ua_stop_all(true);
} else {
    NSLog(@"main loop exit");
}

} `

LOGS

19:30:20 22-05-2021 -[SIPManager startSip]:1530 - Startig sip....

19:30:20 22-05-2021 -[SIPManager startSip]:1574 - ipv4Inter = en0 ipv4 = 192.168.100.11, ipv6Inter = en0 ipv6 =

19:30:20 22-05-2021 -[SIPManager startSip]:1605 - dnsIpv4 = dns_server 192.168.100.1:53 , dnsIpv6 =

19:30:20 22-05-2021 void net_debug_log(): 36 - net_debug_log = --- Network debug --- Local IPv4: [E] en0|192.168.100.11 Local IPv6: [.] en0|fe80::1867:a16b:1e57:256c net interfaces: lo0: 127.0.0.1 pdp_ip0: 25.70.16.172 en0: 192.168.100.11 DNS Servers from Config: (1) 0: 192.168.100.1:53

19:30:20 22-05-2021 void net_dns_debug_log(): 90 - net_dns_debug_log = DNS Servers from Config: (1) 0: 192.168.100.1:53

19:30:20 22-05-2021 void netif_debug_log(): 69 - net_if_debug -> net interfaces: lo0: 127.0.0.1 lo0: ::1 lo0: fe80::1 pdp_ip0: 25.70.16.172 pdp_ip0: fe80::c8e:132b:97f6:52e3 pdp_ip0: 2409:4072:401:ea0b:109f:38ff:cf25:eeea pdp_ip0: 2409:4072:401:ea0b:39dc:d4b1:b67a:7945 pdp_ip1: fe80::8d:4a2d:f47b:2feb pdp_ip1: 2409:4032:409:fa32:149b:bd30:1308:7e28 pdp_ip1: 2409:4032:409:fa32:9ccd:8f0d:1d28:b899 en0: fe80::1867:a16b:1e57:256c en0: 192.168.100.11 awdl0: fe80::5c7f:ff:feb3:6668 utun0: fe80::96ad:b920:d9db:579d utun1: fe80::ca86:80cc:c016:645e ipsec2: fe80::fa95:eaff:fea3:a04c ipsec2: 2409:4032:409:fa32:149b:bd30:1308:7e28 ipsec3: fe80::fa95:eaff:fea3:a04c ipsec3: 2409:4032:409:fa32:149b:bd30:1308:7e28 llw0: fe80::5c7f:ff:feb3:6668

19:30:20 22-05-2021 void netrt_debug_log(): 80 - net_rt_debug -> net routes: Destination Next Hop Iface Type 0.0.0.0/0 192.168.100.1 en0
0.0.0.0/0 25.70.16.172 pdp_ip0
17.57.12.16/0 192.168.100.1 en0
17.57.21.61/0 192.168.100.1 en0
17.57.145.116/0 192.168.100.1 en0
17.57.145.117/0 25.70.16.172 pdp_ip0
17.137.170.33/0 192.168.100.1 en0
17.242.184.25/0 192.168.100.1 en0
17.248.162.103/0 192.168.100.1 en0
17.248.162.135/0 192.168.100.1 en0
17.253.83.201/0 192.168.100.1 en0
17.253.83.203/0 192.168.100.1 en0
23.223.47.168/0 192.168.100.1 en0
31.13.79.54/0 192.168.100.1 en0
52.219.125.50/0 192.168.100.1 en0
104.86.189.105/0 192.168.100.1 en0
104.115.93.28/0 192.168.100.1 en0
104.115.93.155/0 192.168.100.1 en0
136.143.191.88/0 192.168.100.1

19:30:20 22-05-2021 void net_conf_debug(): 47 - net_conf_debug ->

SIP

sip_listen
sip_certificate sip_cafile
sip_capath
sip_trans_def UDP sip_verify_server no sip_tos 160

Call

call_local_timeout 120 call_max_calls 4 call_hold_other_calls yes

Audio

audio_path /share/baresip audio_player audiounit,nil audio_source , audio_alert audiounit,nil auplay_srate 48000 ausrc_srate 48000 auplay_channels 0 ausrc_channels 0 audio_level no

Video

video_source ,

video_source avformat,rtmp://127.0.0.1/app/foo

video_display , video_size "640x480" video_bitrate 1000000 video_fps 30.00 video_fullscreen yes videnc_format yuv420p

AVT

rtp_tos 184 rtp_video_tos 136 rtp_ports 1024-49152 rtp_bandwidth 0-0 rtcp_mux no jitter_buffer_type fixed jitter_buffer_delay 5-10 jitter_buffer_wish 0 rtp_stats no rtp_timeout 0 # in seconds

Network

net_interface en0

19:30:20 22-05-2021 -[SIPManager startSip]:1622 - bua = baresip v 1.1.0 (ARCH / ?)

19:30:20 22-05-2021 -[SIPManager startSip]:1625 - Baresip ua_init Failed 49

19:30:20 22-05-2021 -[SIPManager stopBareSip:]:1696 - closing ... ua_init

19:30:20 22-05-2021 -[SIPManager stopBareSip:]:1704 - unloading modules ...

Thanks, Kannan

sreimers commented 3 years ago

Can you try the current libre version with: https://github.com/baresip/re/commit/9a06d8c84981aaa283b48b8ad125ef4d07c4a877

kannanmaran commented 3 years ago

Can you try the current libre version with: baresip/re@9a06d8c

Hell!! @sreimers Thanks for your fix. this fix works fine in my ubuntu machine. but still, am facing the same issue in iOS. can you please help with this?

kannanmaran commented 3 years ago

Can you try the current libre version with: baresip/re@9a06d8c

Hell!! @sreimers Thanks for your fix. this fix works fine in my ubuntu machine. but still, am facing the same issue in iOS. can you please help with this?

Hello!!! @alfredh @sreimers below is the error is getting from iOS can you help me with this?

tcp: sock_bind: bind: Can't assign requested address (af=30, [fe80::8f1:502d:f9a2:fc97]:0) ua: SIP Transport failed: Can't assign requested address ua: init failed (Can't assign requested address)

kannanmaran commented 3 years ago

Hello!! @alfredh @sreimers

in iOS while setting ipv6 local address to net_set_address(baresip_network(), &temp_sa); only am getting the issue. if is set ipv4 local address alone it's working fine.

this is the error am getting for ipv6. ** tcp: sock_bind: bind: Can't assign requested address (af=30, [fe80::8f1:502d:f9a2:fc97]:0)

is this error because their network is not supporting ipv6 or? as of now, I have enabled ipv4 only. kindly suggest a better way to handle this.

Thanks, Kannan

sreimers commented 3 years ago

socket binding for a ipv6 link local address requires a scope id. you can prevent this like this (or something similar):

    if (af == AF_INET6 && sa_is_linklocal(ip)) {
        sa_init(ip, af); /* reset ipv6 address */
    }
kannanmaran commented 3 years ago

socket binding for a ipv6 link local address requires a scope id. you can prevent this like this (or something similar):

  if (af == AF_INET6 && sa_is_linklocal(ip)) {
      sa_init(ip, af); /* reset ipv6 address */
  }

Hello!! @sreimers

Thanks for your reply. ill try this and get back to you.