Hi, I'm new to this list, and I have been trying to get libmicrohttpd to work on a linux-based smart thermostat.
To no avail, so far. I should say that I'm not an expert on web connections, but fairly fluent in C.
The thermostat has a Freescale imx 27 processor, (ARM-926 EJS) and has an openembedded image, developed around 2011, with linux kernel 2.6.26. The reason I want to get libmicrohttpd working on it, is because it features a zwave controller, which may be used to control TRVs (Thermostatic Radiator Valves), a feature which is not available in the standard firmware of the thermostat. The zwave interface can be operated through openzwave, and its web interface ozwcp (open zwave control panel). ozwcp is linked against libmicrohttpd to provide the web interface.
I have tested the combination libopenzwave-1.4.164, libmicrohttpd-0.9.58 and ozwcp (latest version from github) on a CentOS7 machine, x86_64, with a USB zwave controller and it works flawlessly. External access to the webinterface is OK.
I built the same libraries and code for the thermostat, and everything works, apart from the web interface. When testing with wireshark, I can send a request, and get a 0-byte ACKnowledgement. For the rest, the server remains quiet. No 404 not found, forbidden, unable to connect, nothing. There appears to be no timeout for external connections, in fact, my PC has been trying to connect for the last 30 minutes or so, without interruption. The thermostat has no firewall (I switched it off), and nmap shows the default port (8090) to be open.
I have built libmicrohttpd with the following options :
"--prefix=/usr/local/ --disable-dependency-tracking --enable-examples --enable-messages --enable-https --enable-largefile --enable-curl --with-pic", copied from archlinux for ARM.
The main program was linked against this library, and the webserver is started normally, at least does not report any errors. The options were set as follows:
MHD_USE_THREAD_PER_CONNECTION | MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_DEBUG | MHD_USE_ERROR_LOG
I browsed through previous threads of this mailing list, and the only thing I came across regarding ARM-specific issues was the definition of a long vs. a long long integer. There are differences between a long on x86_64 (8 bytes) and ARM (4 bytes length). I'm not sure if this plays a role, Other than that' there's nothing much to find.
My questions: Is this something new, or have other people encountered this problem, and if so, how was it solved.
If it's really a new issue, where do I start looking? The code is well documented, but it's a lot to plough through.