upgrade.html: Rename uploaded firmware before sysupgrade

At the moment sysupgrade via WebUI is broken on many devices.
This is reproducible: While the (few) status messages seem
normal, the device boots again with the old firmware.
Sysupgrade via SSH always works.

The sysupgrade call in upgrade.html directly uses the path of
the uploaded firmware file as argument. From several tests and
based on caught stdout/stderr from this line, it looks like haserl
deletes the uploaded firmware file due to a hidden trigger before
or even while it is processed by sysupgrade.

The easiest way to work around that is to just rename the file
before using it as argument to sysupgrade. This will preserve the
file DURING sysupgrade. If sysupgrade fails explicitly (status
code != 0), remove the file to provide sufficient memory for
another upload.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Reviewed-by: Fabian Bläse <fabian@blaese.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
This commit is contained in:
Adrian Schmutzler 2019-05-25 20:02:40 +02:00 committed by Fabian Bläse
parent 590dbca7a9
commit dbd8607b53
2 changed files with 4 additions and 3 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-web
PKG_RELEASE:=7
PKG_RELEASE:=8
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

View File

@ -72,8 +72,9 @@ elif [ "$do_sysupgrade" = "1" ] ; then
echo "<pre>"
echo "# Freeing caches ..."
echo 3 > /proc/sys/vm/drop_caches
echo "# sysupgrade $args $HASERL_firmware_path"
sysupgrade $args $HASERL_firmware_path
echo "# sysupgrade $args /tmp/uploadedfw.bin"
mv -f "$HASERL_firmware_path" /tmp/uploadedfw.bin
sysupgrade $args /tmp/uploadedfw.bin || rm /tmp/uploadedfw.bin
echo "</pre>"
fi
%>