Some providers change the Contact header when replying the register.
The provider says 200 OK for register but I got this: ERROR: uac [uac_reg.c:876]: uac_reg_tm_callback(): got sip response 200 while registering
I think the problem is at https://github.com/kamailio/kamailio/blob/master/modules/uac/uac_reg.c#L744
In my case, the provider change the username part of Contact in register request: Contact: sip:DID_NUMBER@IP_ADDRESS:5060 in reply: Contact: sip:SiENC*DID_NUMBER**IP_ADDRESS*5060*@IP_ADDRESS
So if username is different, I will never get ri->flags |= UAC_REG_ONLINE;