diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-08-08 20:45:12 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-08-08 20:45:12 +0000 |
commit | 9df75e7f34d40015f36f15e8190887c7b280461a (patch) | |
tree | 27f7b7a2544deaa4e544f26fddfe8433f5183960 /package/network/services/hostapd | |
parent | 368e7da483ba5a2e60c3274ecfac93126cdb64ae (diff) | |
download | mtk-20170518-9df75e7f34d40015f36f15e8190887c7b280461a.zip mtk-20170518-9df75e7f34d40015f36f15e8190887c7b280461a.tar.gz mtk-20170518-9df75e7f34d40015f36f15e8190887c7b280461a.tar.bz2 |
hostapd: fix ubus reconnect handling
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 37741
Diffstat (limited to 'package/network/services/hostapd')
-rw-r--r-- | package/network/services/hostapd/patches/700-ubus_support.patch | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/package/network/services/hostapd/patches/700-ubus_support.patch b/package/network/services/hostapd/patches/700-ubus_support.patch index 8e6f6c0..c1759c8 100644 --- a/package/network/services/hostapd/patches/700-ubus_support.patch +++ b/package/network/services/hostapd/patches/700-ubus_support.patch @@ -40,7 +40,7 @@ struct hostapd_data **bss; --- /dev/null +++ b/src/ap/ubus.c -@@ -0,0 +1,356 @@ +@@ -0,0 +1,373 @@ +/* + * hostapd / ubus support + * Copyright (c) 2013, Felix Fietkau <nbd@openwrt.org> @@ -72,6 +72,22 @@ + ubus_handle_event(ctx); +} + ++static void ubus_reconnect_timeout(void *eloop_data, void *user_ctx) ++{ ++ if (ubus_reconnect(ctx, NULL)) { ++ eloop_register_timeout(1, 0, ubus_reconnect_timeout, ctx, NULL); ++ return; ++ } ++ ++ eloop_register_read_sock(ctx->sock.fd, ubus_receive, ctx, NULL); ++} ++ ++static void hostapd_ubus_connection_lost(struct ubus_context *ctx) ++{ ++ eloop_unregister_read_sock(ctx->sock.fd); ++ eloop_register_timeout(1, 0, ubus_reconnect_timeout, ctx, NULL); ++} ++ +static bool hostapd_ubus_init(void) +{ + if (ctx) @@ -81,6 +97,7 @@ + if (!ctx) + return false; + ++ ctx->connection_lost = hostapd_ubus_connection_lost; + eloop_register_read_sock(ctx->sock.fd, ubus_receive, ctx, NULL); + return true; +} |