diff options
-rw-r--r-- | input/server.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/input/server.c b/input/server.c index 041f302c..1793e1ca 100644 --- a/input/server.c +++ b/input/server.c @@ -75,18 +75,6 @@ static void auth_callback(DBusError *derr, void *user_data) g_free(auth); } -static int authorize_device(const bdaddr_t *src, const bdaddr_t *dst) -{ - struct authorization_data *auth; - - auth = g_new0(struct authorization_data, 1); - bacpy(&auth->src, src); - bacpy(&auth->dst, dst); - - return btd_request_authorization(src, dst, HID_UUID, - auth_callback, auth); -} - static void connect_event_cb(GIOChannel *chan, GError *err, gpointer data) { uint16_t psm; @@ -123,8 +111,21 @@ static void connect_event_cb(GIOChannel *chan, GError *err, gpointer data) return; } - if ((psm == L2CAP_PSM_HIDP_INTR) && (authorize_device(&src, &dst) < 0)) - input_device_close_channels(&src, &dst); + if (psm == L2CAP_PSM_HIDP_INTR) { + struct authorization_data *auth; + int ret; + + auth = g_new0(struct authorization_data, 1); + bacpy(&auth->src, &src); + bacpy(&auth->dst, &dst); + + ret = btd_request_authorization(&src, &dst, HID_UUID, + auth_callback, auth); + if (ret < 0) { + g_free(auth); + input_device_close_channels(&src, &dst); + } + } } int server_start(const bdaddr_t *src) |