Hi, On Mon, 2025-08-04 at 17:59 -0700, Jeremy Fleischman wrote: > I'm a user of the wifi-presence openwrt package. It talks to hostapd > over the control socket to know when people connect/disconnect from a > given access point. > > My home networks recently grew to the point where the hostapd response > to the STATUS message is larger than 1024 bytes, which causes > wifi-presense to fail to parse the response. I filed a bug with > details here: https://github.com/awilliams/wifi-presence/issues/30. > > What I don't understand is how to fix this bug. wifi-presence can > increase its buffer size, but it seems to me that a better > implementation would loop and keep reading until it gets to the end of > hostapd's response. However, I haven't been able to find a mechanism > in the protocol that allows a client to know if it has read a full > response. I'd expect protocols like this to have a "content length" > header, or a special delimiter that indicates the end of a response. > > I've read through the source code of the example program > (hostapd/hostapd_cli.c), which hardcodes a buffer length of 4096 in > _wpa_ctrl_command: > > static int _wpa_ctrl_command(struct wpa_ctrl *ctrl, const char *cmd, int print) > { > char buf[4096]; > > What's the correct way to handle this? It is a DGRAM socket (possibly UDP) and hostapd itself hardcodes a maximum reply length of 4096 bytes. So you can simply do the same at least for now. Some commands such as "BSS" in wpa_supplicant have an option to limit the range and only return part of the result set. For "STATUS", I suppose it is currently just assumed to be small enough so that it can be returned in a single 4096 byte chunk. Benjamin > > Thanks, > Jeremy > > _______________________________________________ > Hostap mailing list > Hostap@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/hostap _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap