我正在使用eXosip. 当我尝试登录服务器时,第一次尝试总是失败。
eXosip_lock(ctx);
eXosip_add_authentication_info(ctx, username, login, passwd, NULL, domain);
osip_message_t *reg;
int rid = eXosip_register_build_initial_register(ctx, account, server, NULL, 3600, ®);
// Not sure what they do, but they seem to be necessary
osip_message_set_supported (reg, "100rel");
osip_message_set_supported (reg, "path");
eXosip_register_send_register(ctx, rid, reg);
eXosip_unlock(ctx);
(我已删除错误检查以使其更具可读性。)上面的代码导致 EXOSIP_REGISTER_FAILED 事件。通过执行以下代码对此事件作出反应会导致成功注册。
eXosip_lock(ctx);
osip_message_t *reg;
eXosip_register_build_register(ctx, rid, 3600, ®);
eXosip_register_send_register(ctx, rid, reg);
eXosip_unlock(ctx);
我在不同的提供商处尝试了不同的帐户,但总是一样的。诚然,它可以工作,但它使程序流程变得混乱并且错误处理更加困难(例如,对于错误的登录凭据),如果可能的话,我想避免这种情况。
现在我不知道这种行为是否可以预期(我找不到任何关于它的信息),但是......有人可以帮忙吗?提前致谢!