aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2011-03-02 21:48:45 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-03-02 21:49:50 +0100
commitfb5b6dc80e1cc6812a71faa72a96bc7708e64fc7 (patch)
tree9899b1183b1067ead1fba6b8eaa891d07bf2e6ce /src
parent0d20e0d12f27d23591200a76eee1e9b31308efd5 (diff)
mgcp: Respect the blocked indication fo an endpoint.
Diffstat (limited to 'src')
-rw-r--r--src/mgcp/mgcp_protocol.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mgcp/mgcp_protocol.c b/src/mgcp/mgcp_protocol.c
index 9233042..815a97c 100644
--- a/src/mgcp/mgcp_protocol.c
+++ b/src/mgcp/mgcp_protocol.c
@@ -310,19 +310,29 @@ static struct mgcp_endpoint *find_e1_endpoint(struct mgcp_config *cfg,
static struct mgcp_endpoint *find_endpoint(struct mgcp_config *cfg, const char *mgcp)
{
+ struct mgcp_endpoint *endp = NULL;
char *endptr = NULL;
unsigned int gw = INT_MAX;
if (strncmp(mgcp, "ds/e1", 5) == 0) {
- return find_e1_endpoint(cfg, mgcp);
+ endp = find_e1_endpoint(cfg, mgcp);
} else {
gw = strtoul(mgcp, &endptr, 16);
if (gw > 0 && gw < cfg->trunk.number_endpoints && strcmp(endptr, "@mgw") == 0)
- return &cfg->trunk.endpoints[gw];
+ endp = &cfg->trunk.endpoints[gw];
}
- LOGP(DMGCP, LOGL_ERROR, "Not able to find endpoint: '%s'\n", mgcp);
- return NULL;
+ if (!endp) {
+ LOGP(DMGCP, LOGL_ERROR, "Not able to find endpoint: '%s'\n", mgcp);
+ return NULL;
+ }
+
+ if (endp->blocked) {
+ LOGP(DMGCP, LOGL_NOTICE, "The endpoint '%s' is blocked.\n", mgcp);
+ return NULL;
+ }
+
+ return endp;
}
int mgcp_analyze_header(struct mgcp_config *cfg, struct msgb *msg,