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