silent call: clarify rc and error messages logged on vty
In gsm_silent_call_{start,stop}(), return meaningful error codes and interpret them on the VTY to clearly indicate the result. Change-Id: Id5abb8f2ba901689e03040af8e51483b6c618e7f
This commit is contained in:
parent
e9495388d9
commit
d656dff235
|
@ -30,6 +30,7 @@
|
|||
#include <osmocom/msc/gsm_data.h>
|
||||
#include <osmocom/msc/gsm_subscriber.h>
|
||||
#include <osmocom/msc/osmo_msc.h>
|
||||
#include <osmocom/msc/vlr.h>
|
||||
|
||||
/* paging of the requested subscriber has completed */
|
||||
static int paging_cb_silent(unsigned int hooknum, unsigned int event,
|
||||
|
@ -130,7 +131,9 @@ int gsm_silent_call_start(struct vlr_subscr *vsub, void *data, int type)
|
|||
* A-interface. */
|
||||
req = subscr_request_conn(vsub, paging_cb_silent, data,
|
||||
"establish silent call");
|
||||
return req != NULL;
|
||||
if (!req)
|
||||
return -ENODEV;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* end a silent call with a given subscriber */
|
||||
|
@ -139,12 +142,18 @@ int gsm_silent_call_stop(struct vlr_subscr *vsub)
|
|||
struct gsm_subscriber_connection *conn;
|
||||
|
||||
conn = connection_for_subscr(vsub);
|
||||
if (!conn)
|
||||
return -EINVAL;
|
||||
if (!conn) {
|
||||
LOGP(DMM, LOGL_ERROR, "%s: Cannot stop silent call, no connection for subscriber\n",
|
||||
vlr_subscr_name(vsub));
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* did we actually establish a silent call for this guy? */
|
||||
if (!conn->silent_call)
|
||||
return -EINVAL;
|
||||
if (!conn->silent_call) {
|
||||
LOGP(DMM, LOGL_ERROR, "%s: Cannot stop silent call, subscriber has no active silent call\n",
|
||||
vlr_subscr_name(vsub));
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
#if BEFORE_MSCSPLIT
|
||||
/* Re-enable this log output once we can obtain this information via
|
||||
|
|
|
@ -524,16 +524,20 @@ DEFUN(subscriber_silent_call_start,
|
|||
type = RSL_CHANNEED_ANY; /* Defaults to ANY */
|
||||
|
||||
rc = gsm_silent_call_start(vsub, vty, type);
|
||||
if (rc <= 0) {
|
||||
vty_out(vty, "%% Subscriber not attached%s",
|
||||
VTY_NEWLINE);
|
||||
vlr_subscr_put(vsub);
|
||||
return CMD_WARNING;
|
||||
switch (rc) {
|
||||
case -ENODEV:
|
||||
vty_out(vty, "%% Subscriber not attached%s", VTY_NEWLINE);
|
||||
break;
|
||||
default:
|
||||
if (rc)
|
||||
vty_out(vty, "%% Cannot start silent call (rc=%d)%s", rc, VTY_NEWLINE);
|
||||
else
|
||||
vty_out(vty, "%% Silent call initiated%s", VTY_NEWLINE);
|
||||
break;
|
||||
}
|
||||
|
||||
vlr_subscr_put(vsub);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
return rc ? CMD_WARNING : CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(subscriber_silent_call_stop,
|
||||
|
@ -553,14 +557,24 @@ DEFUN(subscriber_silent_call_stop,
|
|||
}
|
||||
|
||||
rc = gsm_silent_call_stop(vsub);
|
||||
if (rc < 0) {
|
||||
vlr_subscr_put(vsub);
|
||||
return CMD_WARNING;
|
||||
switch (rc) {
|
||||
case -ENODEV:
|
||||
vty_out(vty, "%% No active connection for subscriber%s", VTY_NEWLINE);
|
||||
break;
|
||||
case -ENOENT:
|
||||
vty_out(vty, "%% Subscriber has no silent call active%s",
|
||||
VTY_NEWLINE);
|
||||
break;
|
||||
default:
|
||||
if (rc)
|
||||
vty_out(vty, "%% Cannot stop silent call (rc=%d)%s", rc, VTY_NEWLINE);
|
||||
else
|
||||
vty_out(vty, "%% Silent call stopped%s", VTY_NEWLINE);
|
||||
break;
|
||||
}
|
||||
|
||||
vlr_subscr_put(vsub);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
return rc ? CMD_WARNING : CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(subscriber_ussd_notify,
|
||||
|
|
Loading…
Reference in New Issue