1# $OpenBSD: sftp-resume.sh,v 1.2 2025/03/11 09:06:50 dtucker Exp $ 2# Placed in the Public Domain. 3 4tid="sftp resume" 5 6CLIENT_LOG=${OBJ}/sftp.log 7 8# We test up to 1MB, ensure source data is large enough. 9increase_datafile_size 1200 10 11for cmd in put get; do 12 verbose "$tid: ${cmd}" 13 for size in 0 1 1k 1m size-1 same; do 14 trace "$tid: test ${cmd} ${size}" 15 rm -rf ${COPY}.1 ${COPY}.2 16 cp ${DATA} ${COPY}.1 17 18 # Set up requested source and destination file sizes. 19 case "${size}" in 20 0) touch ${COPY}.2 21 ;; 22 size-1) dd if=${DATA} of=${COPY}.1 bs=1024 count=1 >/dev/null 2>&1 23 dd if=${DATA} of=${COPY}.2 bs=1023 count=1 >/dev/null 2>&1 24 ;; 25 same) cp ${DATA} ${COPY}.2 26 ;; 27 1m) dd if=${COPY}.1 of=${COPY}.2 bs=1k count=1k >/dev/null 2<&1 28 ;; 29 *) dd if=${COPY}.1 of=${COPY}.2 bs=${size} count=1 >/dev/null 2>&1 30 ;; 31 esac 32 33 # Perform copy and check. 34 echo "${cmd} -a ${COPY}.1 ${COPY}.2" | \ 35 ${SFTP} -D ${SFTPSERVER} -vvv >${CLIENT_LOG} 2>&1 \ 36 || fail "${cmd} failed" 37 cmp ${COPY}.1 ${COPY}.2 || fail "corrupted copy after ${cmd} ${size}" 38 grep "reordered" ${CLIENT_LOG} >/dev/null && \ 39 fail "server reordered requests ${cmd} ${size}" 40 done 41done 42 43rm -rf ${COPY}.1 ${COPY}.2 44