diff --git a/src/modems/sofia.c b/src/modems/sofia.c index b02c1d9..4bad4e4 100644 --- a/src/modems/sofia.c +++ b/src/modems/sofia.c @@ -161,6 +161,7 @@ static int _sofia_start(ModemPlugin * modem, unsigned int retry) char const * p; char const * q; nua_handle_t * handle; + ModemEvent mevent; #ifdef DEBUG fprintf(stderr, "DEBUG: %s()\n", __func__); @@ -212,11 +213,20 @@ static int _sofia_start(ModemPlugin * modem, unsigned int retry) snprintf(us.us_str, sizeof(us.us_str), "%s%s@%s", "sip:", p, q); nua_register(handle, SIPTAG_FROM_STR(us.us_str), TAG_END()); } + else + { + /* report that we are not registering */ + memset(&mevent, 0, sizeof(mevent)); + mevent.type = MODEM_EVENT_TYPE_REGISTRATION; + mevent.registration.mode = MODEM_REGISTRATION_MODE_DISABLED; + mevent.registration.status + = MODEM_REGISTRATION_STATUS_NOT_SEARCHING; + helper->event(helper->modem, &mevent); + } + /* set (and verify) parameters */ nua_set_params(sofia->nua, NUTAG_ENABLEMESSAGE(1), NUTAG_ENABLEINVITE(1), - NUTAG_AUTOALERT(1), - NUTAG_AUTOANSWER(0), - TAG_END()); + NUTAG_AUTOALERT(1), NUTAG_AUTOANSWER(0), TAG_END()); nua_get_params(sofia->nua, TAG_ANY(), TAG_END()); return 0; } diff --git a/src/phone.c b/src/phone.c index b7fdb91..a8d47d0 100644 --- a/src/phone.c +++ b/src/phone.c @@ -941,9 +941,13 @@ int phone_event(Phone * phone, PhoneEvent * event) MODEM_EVENT_TYPE_AUTHENTICATION); break; case PHONE_EVENT_TYPE_STARTING: - if(ret == 0 && (ret = modem_start(phone->modem)) == 0) - phone_event_type(phone, - PHONE_EVENT_TYPE_STARTED); + if(ret == 0) + { + ret = modem_start(phone->modem); + phone_event_type(phone, (ret == 0) + ? PHONE_EVENT_TYPE_STARTED + : PHONE_EVENT_TYPE_STOPPED); + } break; case PHONE_EVENT_TYPE_STOPPING: if(ret == 0 && phone->modem != NULL diff --git a/src/plugins/panel.c b/src/plugins/panel.c index 804a2cd..76329e0 100644 --- a/src/plugins/panel.c +++ b/src/plugins/panel.c @@ -265,13 +265,8 @@ static int _panel_event(Panel * panel, PhoneEvent * event) _panel_set_signal_level(panel, 0.0 / 0.0); _panel_set_status(panel, FALSE, FALSE); break; - case PHONE_EVENT_TYPE_STARTED: - _panel_set_operator(panel, -1, "Connecting..."); - _panel_set_signal_level(panel, 0.0 / 0.0); - _panel_set_status(panel, FALSE, FALSE); - break; case PHONE_EVENT_TYPE_STARTING: - _panel_set_operator(panel, -1, "Starting..."); + _panel_set_operator(panel, -1, "Connecting..."); _panel_set_signal_level(panel, 0.0 / 0.0); _panel_set_status(panel, FALSE, FALSE); break;