To fix this, I made a patch in the upgrade_lib.c from the 0.9.3 SDK and made a new libupgrade.a (files attached). Repace the libupgrade.a file in the SDK with the attached file.
This works for me on SDK 0.9.4, but there might be more issues and more investigation is needed to find the root cause. Difficult as we haven't got the complete source 0.9.4 SDK afaik.
/Bananis
but libupgrade.a from 0.9.5b1 works well with 0.9.4 SDK
SDM Energy Meter: https://github.com/reaper7/SDM_Energy_Meter
MLEDScroll (TM1640 led matrix): https://github.com/reaper7/MLEDScroll
AT+CIUPDATE
+CIPUPDATE:1b
+CIPUPDATE:2
+CIPUPDATE:3
+CIPUPDATE:4
And that's it. No restart, nothing. Also I only see one request to the server:
Request started: "GET" http://192.168.2.2:80/v1/device/rom/?is_format_simple=true
Request ended: http://192.168.2.2:80/v1/device/rom/default.aspx?is_format_simple=true with HTTP status 200.0
The second request to get the user2.bin file never happens.
If I use the lib from 0.9.5b1, it always jumps to user1.
I must also say that this OTA update does not work for me with 0.9.3 all the time either. The update happens, it restarts and then I get a bunch of never ending exceptions. But sometimes it works as it should.