diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-12-15 21:28:09 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:34 +0100 |
commit | 770ea5310987f89154b7cf14eed900bcecd0ca28 (patch) | |
tree | 6422a56eb5055a8a1a141d5178098aa89dd37aa4 | |
parent | 3d1d4c42e5a2774251a88f8a01bfe5a964f0824f (diff) |
bearer: fail connecting try if not allowed to connect
-rw-r--r-- | src/mm-bearer.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/mm-bearer.c b/src/mm-bearer.c index 35621f09..6187d01c 100644 --- a/src/mm-bearer.c +++ b/src/mm-bearer.c @@ -83,6 +83,15 @@ handle_connect (MMBearer *self, GDBusMethodInvocation *invocation, const gchar *number) { + if (!self->priv->connection_allowed) { + g_dbus_method_invocation_return_error ( + invocation, + MM_CORE_ERROR, + MM_CORE_ERROR_WRONG_STATE, + "Not allowed to connect bearer"); + return TRUE; + } + if (MM_BEARER_GET_CLASS (self)->connect != NULL && MM_BEARER_GET_CLASS (self)->connect_finish != NULL) { MM_BEARER_GET_CLASS (self)->connect ( @@ -182,12 +191,20 @@ mm_bearer_get_path (MMBearer *self) void mm_bearer_set_connection_allowed (MMBearer *self) { + if (self->priv->connection_allowed) + return; + + mm_dbg ("Connection in bearer '%s' is allowed", self->priv->path); self->priv->connection_allowed = TRUE; } void mm_bearer_set_connection_forbidden (MMBearer *self) { + if (!self->priv->connection_allowed) + return; + + mm_dbg ("Connection in bearer '%s' is forbidden", self->priv->path); self->priv->connection_allowed = FALSE; /* TODO: possibly, force disconnection */ } |