info "fetching $liveurl"
if getargbool 0 'rd.writable.fsimg'; then
- imgheader=$(curl -sIL "$liveurl")
-
- # shellcheck disable=SC2181
- ret=$?
- if [ $ret != 0 ]; then
- warn "failed to get live image header: error $ret"
- else
- imgheaderlen=$(echo "$imgheader" | sed -n 's/[cC]ontent-[lL]ength: *\([[:digit:]]*\).*/\1/p')
+ if str_starts "$liveurl" "tftp"; then
+ # we need to pass -v to get tftp tsize value in stderr
+ imgheader=$(curl -vsIL "$liveurl" 2>&1)
+ # curl returns a non-zero exit status in this case
+ ret=$?
+ imgheaderlen=$(echo "$imgheader" | sed -n 's/\* got option=(tsize) value=(*\([[:digit:]]*\).*/\1/p')
if [ -z "$imgheaderlen" ]; then
- warn "failed to get 'Content-Length' header from live image"
+ warn "failed to get 'tsize' header from TFTP live image: error $ret"
+ fi
+ else
+ imgheader=$(curl -sIL "$liveurl")
+ ret=$?
+ if [ $ret != 0 ]; then
+ warn "failed to get live image header: error $ret"
else
- imgsize=$((imgheaderlen / (1024 * 1024)))
- check_live_ram $imgsize
+ imgheaderlen=$(echo "$imgheader" | sed -n 's/[cC]ontent-[lL]ength: *\([[:digit:]]*\).*/\1/p')
+ if [ -z "$imgheaderlen" ]; then
+ warn "failed to get 'Content-Length' header from live image"
+ fi
fi
fi
+
+ if [ -n "$imgheaderlen" ]; then
+ imgsize=$((imgheaderlen / (1024 * 1024)))
+ check_live_ram $imgsize
+ fi
fi
imgfile=