Al 17/04/11 16:51, En/na Luca Olivetti ha escrit:
> Al 17/04/11 15:51, En/na Luca Olivetti ha escrit:
>
>> Well, looking at su/su_os_nw.c (which I could have done before asking, duh)
>> it appears it is still so :-(
>>
>> Any plan to add Linux support?
>>
>> I can have a go at it myself, I'm not really good with C, but I can
>> start from here:
>>
>> http://stackoverflow.com/questions/579783/how-to-detect-ip-address-change-programmatically-in-linux
>> (the rely using socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE)).
>
> Do I need the su_msg_send and the su_nw_changed_msg_recv or can I
> call the su_network_changed_cb directly from the monitoring thread?
Ok, I found the hard way: I have to send the message ;-)
But I still have problems:
1) if I monitor both for RTM_NEWADDR and RTM_DELADDR, on an ip change two
messages will be sent (old address, new address) -> sofia crashes:
eth0 was 192.168.10.168
tport_destroy(0x595e60)
tport_create(): 0x5962f0
nta: master transport created
eth0 is now 192.168.10.175
root@OpenWrt:/# tport_bind_server(0x5962f0) to */*:5060/sip
tport_bind_server(0x5962f0): calling tport_listen for udp
tport_alloc_primary(0x5962f0): new primary tport 0x595e60
tport_listen(0x595e60): listening at udp/192.168.10.175:5060/sip
tport_bind_server(0x5962f0): calling tport_listen for tcp
tport_alloc_primary(0x5962f0): new primary tport 0x5972d0
tport_listen(0x5972d0): listening at tcp/192.168.10.175:5060/sip
tport_bind_server(0x5962f0): calling tport_listen for udp
tport_alloc_primary(0x5962f0): new primary tport 0x597580
tport_listen(0x597580): listening at udp/127.0.0.1:5060/sip
tport_bind_server(0x5962f0): calling tport_listen for tcp
tport_alloc_primary(0x5962f0): new primary tport 0x59d080
tport_listen(0x59d080): listening at tcp/127.0.0.1:5060/sip
nta: bound to (*:5060;transport=*)
nta: agent_init_via: SIP/2.0/udp 192.168.10.175 (sip)
nta: agent_init_via: SIP/2.0/tcp 192.168.10.175 (sip)
nta: agent_init_via: SIP/2.0/udp 127.0.0.1 (sip)
nta: agent_init_via: SIP/2.0/tcp 127.0.0.1 (sip)
nta: Via fields initialized
nta: Contact header created
stun_is_requested: entering.
nua_register: Adding contact URL '192.168.10.175' to list.
nua_register: ignoring contact candidate 127.0.0.1:.
A2 = MD5(REGISTER:sip:ekiga.net)
auth_response: db79b8a5046c76654b742311b7d4a33d =
MD5(53060310bbad90036d54e1954983ae4e:4dab21db0000e3306f1513e34e9e24eedc00a7827bd9394f:14bd7ed1967527d3770ab1f7c12901c5)
(qop=NONE)
svd: nta.c: 7785: outgoing_create: Assertion
`tport_name_is_resolved(orq->orq_tpn)' failed.
2) if I monitor for just RTM_NEWADDR, I just get one message, sometimes it
still crashes (like above but the assertion isn't visible, it crashes before
reaching it), but when it doesn't sofia still uses the old address for the
local sdp (I don't prepare the address, I just prepare the "m=" and "a=" lines).
3) I noticed that su_root_add_network_changed is called three times, hence
three threads are started, three messages were sent for each change-> instant
crash. I put a workaround to start the thread just once.
Maybe it's better to forget about the NUTAG_DETECT_NETWORK_UPDATES and restart
the application when the address changes?
Bye
--
Luca
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve
application availability and disaster protection. Learn more about boosting
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Sofia-sip-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel