diff options
author | Wojciech Jowsa <wojciech.jowsa@gmail.com> | 2020-11-15 10:19:17 +0100 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2020-11-23 01:06:02 +0000 |
commit | f53a63999784bcb7dc513e221f3f25dd3de2f35e (patch) | |
tree | ee0cfe7ed673858df5dd251066235fd5ee8bf797 /ubus.c | |
parent | 14a3cb42047bd0c0f8d5713332b9b4516a505607 (diff) |
ubus: fix uhttpd crash
Unregister ubus subscriber in notification remove callback.
Without this call, uhttpd crashes when client tries to subscribe to
the ubus object after the object was unregistred and registered again.
It is bacuse the reference to ubus subscriber is not freed but
the memory is cleared in the uh_request_done function.
Signed-off-by: Wojciech Jowsa <wojciech.jowsa@gmail.com>
Diffstat (limited to 'ubus.c')
-rw-r--r-- | ubus.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -357,6 +357,8 @@ static void uh_ubus_subscription_notification_remove_cb(struct ubus_context *ctx du = container_of(s, struct dispatch_ubus, sub); cl = container_of(du, struct client, dispatch.ubus); + ubus_unregister_subscriber(ctx, &du->sub); + ops->request_done(cl); } |