43 lines
1.2 KiB
Bash
43 lines
1.2 KiB
Bash
# $OpenBSD: sftp-resume.sh,v 1.2 2025/03/11 09:06:50 dtucker Exp $
|
|
# Placed in the Public Domain.
|
|
|
|
tid="sftp resume"
|
|
|
|
CLIENT_LOG=${OBJ}/sftp.log
|
|
|
|
# We test up to 1MB, ensure source data is large enough.
|
|
increase_datafile_size 1200
|
|
|
|
for cmd in put get; do
|
|
verbose "$tid: ${cmd}"
|
|
for size in 0 1 1k 1m size-1 same; do
|
|
trace "$tid: test ${cmd} ${size}"
|
|
rm -rf ${COPY}.1 ${COPY}.2
|
|
cp ${DATA} ${COPY}.1
|
|
|
|
# Set up requested source and destination file sizes.
|
|
case "${size}" in
|
|
0) touch ${COPY}.2
|
|
;;
|
|
size-1) dd if=${DATA} of=${COPY}.1 bs=1024 count=1 >/dev/null 2>&1
|
|
dd if=${DATA} of=${COPY}.2 bs=1023 count=1 >/dev/null 2>&1
|
|
;;
|
|
same) cp ${DATA} ${COPY}.2
|
|
;;
|
|
1m) dd if=${COPY}.1 of=${COPY}.2 bs=1k count=1k >/dev/null 2<&1
|
|
;;
|
|
*) dd if=${COPY}.1 of=${COPY}.2 bs=${size} count=1 >/dev/null 2>&1
|
|
;;
|
|
esac
|
|
|
|
# Perform copy and check.
|
|
echo "${cmd} -a ${COPY}.1 ${COPY}.2" | \
|
|
${SFTP} -D ${SFTPSERVER} -vvv >${CLIENT_LOG} 2>&1 \
|
|
|| fail "${cmd} failed"
|
|
cmp ${COPY}.1 ${COPY}.2 || fail "corrupted copy after ${cmd} ${size}"
|
|
grep "reordered" ${CLIENT_LOG} >/dev/null && \
|
|
fail "server reordered requests ${cmd} ${size}"
|
|
done
|
|
done
|
|
|
|
rm -rf ${COPY}.1 ${COPY}.2
|