OpenBSD CVS

CVS log for src/usr.bin/rsync/sender.c


[BACK] Up to [local] / src / usr.bin / rsync

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.33 / (download) - annotate - [select for diffs], Wed Mar 20 09:26:42 2024 UTC (8 weeks, 4 days ago) by claudio
Branch: MAIN
CVS Tags: HEAD
Changes since 1.32: +5 -3 lines
Diff to previous 1.32 (colored)

Remove some else statements in if () else if () chains that don't need
to be written this way. Makes the code more readable.
OK tb@

Revision 1.32 / (download) - annotate - [select for diffs], Tue Feb 27 11:28:30 2024 UTC (2 months, 3 weeks ago) by claudio
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5
Changes since 1.31: +3 -2 lines
Diff to previous 1.31 (colored)

Split hash_file into three steps, setup, add buf and final.

Setup inits the context and adds the seed. The buf function simply adds
a block from the file to the hash. The final function calls MD4_Final()
to close the context and generate the hash.

This will help to remove the mmap in the sender and should result in a
more atomic view of the file since hash_file() is now called together
with the other hash_functions.

OK deraadt@ tb@

Revision 1.31 / (download) - annotate - [select for diffs], Mon Feb 19 16:39:18 2024 UTC (2 months, 4 weeks ago) by claudio
Branch: MAIN
Changes since 1.30: +7 -3 lines
Diff to previous 1.30 (colored)

Fix a deadlock in openrsync when big files are synced using the hash
algorithm. Make sure the sender does not run ahead of itself and end
stalling in a read from network that never shows up. Instead ensure
that all queued data is pushed out before accepting new data.

Problem found by and fix developed with Kyle Evans (kevans freebsd.org)
OK tb@ deraadt@

Revision 1.28.2.1 / (download) - annotate - [select for diffs], Tue Nov 9 13:41:24 2021 UTC (2 years, 6 months ago) by benno
Branch: OPENBSD_6_9
Changes since 1.28: +6 -17 lines
Diff to previous 1.28 (colored) next main 1.29 (colored)

rpki-client(8) should handle CA misbehaviours as soft-errors.

This is a merge of usr.sbin/rpki-client and usr.bin/rsync from current
and includes all commits in rpki-client 7.5 up to Tue Nov 9 11:03:40
2021 and to openrsync up to Wed Nov 3 14:42:13 2021, including:

* Make rpki-client more resilient regarding untrusted input:
  - fail repository synchronisation after 15min runtime
  - limit the number of publication points per TAL
  - don't allow DOCTYPE definitions in RRDP XML files
  - fix detection of HTTP redirect loops.
* limit the number of concurrent rsync processes.
* fix CRLF in tal files.

This is patches/6.9/common/021_rpki.patch.sig

Revision 1.30 / (download) - annotate - [select for diffs], Sun Aug 29 13:43:46 2021 UTC (2 years, 8 months ago) by claudio
Branch: MAIN
CVS Tags: OPENBSD_7_4_BASE, OPENBSD_7_4, OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2, OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0
Changes since 1.29: +6 -17 lines
Diff to previous 1.29 (colored)

Implement --exclude/exclude-file and --include/include-file.
Currently only simple include and excludes work, the advanced filters
introduced later in rsync are not implemented. It is unclear if the per
directory filters are something we want to implement. This requires
more modern protocols which openrsync is not able to handle right now.

This adds a special matching function to allow the ** matching which behaves
mostly like rsyncs version with the exception of how bad [] patterns are
expanded. For bad patterns openrsync follows more how fnmatch behaves and
not the somewhat strange rsync behaviour.

Not perfect but committing now so people can test and provide feedback.

Revision 1.29 / (download) - annotate - [select for diffs], Wed Jun 30 13:10:04 2021 UTC (2 years, 10 months ago) by claudio
Branch: MAIN
Changes since 1.28: +1 -1 lines
Diff to previous 1.28 (colored)

Replace Id: tags with OpenBSD: tags
OK deraadt@

Revision 1.28 / (download) - annotate - [select for diffs], Mon Apr 5 18:17:37 2021 UTC (3 years, 1 month ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_6_9_BASE
Branch point for: OPENBSD_6_9
Changes since 1.27: +3 -4 lines
Diff to previous 1.27 (colored)

minor KNF

Revision 1.27 / (download) - annotate - [select for diffs], Mon Mar 22 11:49:15 2021 UTC (3 years, 1 month ago) by claudio
Branch: MAIN
Changes since 1.26: +3 -3 lines
Diff to previous 1.26 (colored)

Remove unveil() from the rsync_sender() and flist_gen(). The sender is
not able to properly unveil itself because you can request many files
as arguments. At the same time the sender is read-only and uses rpath
pledge() so the gain from unveil() is less of an issue.
On the receiver side all files land in one directory and this part still
uses unveil() to protect rsync to somehow walk out of the destination
directory.
From kristaps@

Revision 1.26 / (download) - annotate - [select for diffs], Tue Nov 24 16:54:44 2020 UTC (3 years, 5 months ago) by claudio
Branch: MAIN
Changes since 1.25: +2 -2 lines
Diff to previous 1.25 (colored)

Simple implementation of --timeout to exit after specified seconds of I/O
inactivity. By default rsync will wait forever but this results in stuck
processes if the remote side does not answer properly as seen in rpki-client.
OK job@ benno@

Revision 1.25 / (download) - annotate - [select for diffs], Fri Jun 28 13:35:03 2019 UTC (4 years, 10 months ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7, OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.24: +2 -2 lines
Diff to previous 1.24 (colored)

When system calls indicate an error they return -1, not some arbitrary
value < 0.  errno is only updated in this case.  Change all (most?)
callers of syscalls to follow this better, and let's see if this strictness
helps us in the future.

Revision 1.24 / (download) - annotate - [select for diffs], Sun Jun 2 17:36:48 2019 UTC (4 years, 11 months ago) by florian
Branch: MAIN
Changes since 1.23: +7 -2 lines
Diff to previous 1.23 (colored)

Use a simple hash table to look up blocks by the fast-hash.  Also use
a rolling computation for the fast-hash.OB With this openrsync is on
par with gpl rsync for file updates.
From kristaps

Revision 1.23 / (download) - annotate - [select for diffs], Wed May 8 21:30:11 2019 UTC (5 years ago) by benno
Branch: MAIN
Changes since 1.22: +4 -4 lines
Diff to previous 1.22 (colored)

remove sess argument from all functions that only used it for logging
functions.
ok deraadt@

Revision 1.22 / (download) - annotate - [select for diffs], Wed May 8 20:00:25 2019 UTC (5 years ago) by benno
Branch: MAIN
Changes since 1.21: +48 -48 lines
Diff to previous 1.21 (colored)

remove sess argument from log functions. ok deraadt@

Revision 1.21 / (download) - annotate - [select for diffs], Tue Apr 2 11:05:55 2019 UTC (5 years, 1 month ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE, OPENBSD_6_5
Changes since 1.20: +4 -4 lines
Diff to previous 1.20 (colored)

annoying white space

Revision 1.20 / (download) - annotate - [select for diffs], Sat Mar 23 16:04:28 2019 UTC (5 years, 1 month ago) by deraadt
Branch: MAIN
Changes since 1.19: +8 -9 lines
Diff to previous 1.19 (colored)

indents and reflows around ERR*() and LOG*(); ok benno

Revision 1.19 / (download) - annotate - [select for diffs], Thu Feb 21 22:11:26 2019 UTC (5 years, 2 months ago) by benno
Branch: MAIN
Changes since 1.18: +2 -2 lines
Diff to previous 1.18 (colored)

kristaps 156cf3b7d459efe133d603158fc33c243dc07ba0
Use style(9) for bit

Revision 1.18 / (download) - annotate - [select for diffs], Thu Feb 21 22:09:47 2019 UTC (5 years, 2 months ago) by benno
Branch: MAIN
Changes since 1.17: +38 -18 lines
Diff to previous 1.17 (colored)

kristaps 97df28257f3cc5faae8072fbadbc334a57a4e8a7
Remove another potential deadlock when in sender mode with
multiplexing enabled.

Revision 1.17 / (download) - annotate - [select for diffs], Thu Feb 21 22:08:53 2019 UTC (5 years, 2 months ago) by benno
Branch: MAIN
Changes since 1.16: +7 -6 lines
Diff to previous 1.16 (colored)

kristaps b1c688cad9f544a59b871c9984888cb1a3ae11e4
Avoid crash when -n is specified.

Revision 1.16 / (download) - annotate - [select for diffs], Mon Feb 18 22:47:34 2019 UTC (5 years, 3 months ago) by benno
Branch: MAIN
Changes since 1.15: +199 -169 lines
Diff to previous 1.15 (colored)

new attempt to sync with kristaps up to Sun Feb 17 2019

339cf5998c0c022623cd68de50722b6c14543952 Push "error trail" further into code.

baf58ce5fe1bc6ce431b3b0ac8264b83ae8c7d02 Document all arguments.  Add
common -av usage.  Remove bits about not supporting anything but
files/dirs.

821a811a8c80e52fb56b241fc65a16cae1b4fb2c Disambiguate as prodded by deraadt@

6c4475b8f226e9031ec0ec1b3f14f7d347132c87 Add -h to usage string

4d344ae6156873b44c95de0c1ed629e637c2d7ab Clarify error message
language, use service name instead of port, specify that the socket is
SOCK_STREAM.  From deraadt@.  Tweaked for lowercase messages.

f3ec049e76257fc96bcdc872f1d3b967b98f3eb6 In consideration to benno@'s
comments, let the mktemp functions propogate an errno handled by the
caller.  Also keep the original line lengths.  While in mktemp.c, make
some defines into an enum.

e116c2bd00e634b56e4276120135915ceaa31cf2 Put the FSM of the sender
into its own function.  Put dry_run ack and end of phase ack into the
send buffer too, further reducing the possibility of deadlock.

c7745aa4c7394ca89d841f8ee76782256d694340 Make the sender write loop be
fully non-blocking.  This frees us of deadlocking the protocol because
the sender will always be able to pull down data.

93c7b4843e80aeac2ec6ae6ffc395df4deaf4a31 Remove "yoda" notation to be
more in tune with OpenBSD.  Most found by deraadt@.

Revision 1.15 / (download) - annotate - [select for diffs], Mon Feb 18 21:55:27 2019 UTC (5 years, 3 months ago) by benno
Branch: MAIN
Changes since 1.14: +173 -203 lines
Diff to previous 1.14 (colored)

revert previous

Revision 1.14 / (download) - annotate - [select for diffs], Mon Feb 18 21:34:54 2019 UTC (5 years, 3 months ago) by benno
Branch: MAIN
Changes since 1.13: +203 -173 lines
Diff to previous 1.13 (colored)

sync with kristaps up to Sun Feb 17 2019

339cf5998c0c022623cd68de50722b6c14543952 Push "error trail" further into code.

baf58ce5fe1bc6ce431b3b0ac8264b83ae8c7d02 Document all arguments.  Add
  common -av usage.  Remove bits about not supporting anything but
  files/dirs.

821a811a8c80e52fb56b241fc65a16cae1b4fb2c Disambiguate as prodded by deraadt@

6c4475b8f226e9031ec0ec1b3f14f7d347132c87 Add -h to usage string

4d344ae6156873b44c95de0c1ed629e637c2d7ab Clarify error message
  language, use service name instead of port, specify that the socket is
  SOCK_STREAM.  From deraadt@.  Tweaked for lowercase messages.

f3ec049e76257fc96bcdc872f1d3b967b98f3eb6 In consideration to benno@'s
  comments, let the mktemp functions propogate an errno handled by the
  caller.  Also keep the original line lengths.  While in mktemp.c, make
  some defines into an enum.

e116c2bd00e634b56e4276120135915ceaa31cf2 Put the FSM of the sender
  into its own function.  Put dry_run ack and end of phase ack into the
  send buffer too, further reducing the possibility of deadlock.

c7745aa4c7394ca89d841f8ee76782256d694340 Make the sender write loop be
  fully non-blocking.  This frees us of deadlocking the protocol because
  the sender will always be able to pull down data.

93c7b4843e80aeac2ec6ae6ffc395df4deaf4a31 Remove "yoda" notation to be
  more in tune with OpenBSD.  Most found by deraadt@.

Revision 1.13 / (download) - annotate - [select for diffs], Sun Feb 17 16:34:04 2019 UTC (5 years, 3 months ago) by deraadt
Branch: MAIN
Changes since 1.12: +6 -6 lines
Diff to previous 1.12 (colored)

more yoda repairs

Revision 1.12 / (download) - annotate - [select for diffs], Sat Feb 16 23:16:54 2019 UTC (5 years, 3 months ago) by deraadt
Branch: MAIN
Changes since 1.11: +3 -3 lines
Diff to previous 1.11 (colored)

use MINIMUM() instead of MIN() as elsewhere in the tree

Revision 1.11 / (download) - annotate - [select for diffs], Sat Feb 16 17:59:33 2019 UTC (5 years, 3 months ago) by deraadt
Branch: MAIN
Changes since 1.10: +5 -5 lines
Diff to previous 1.10 (colored)

nasty ugly invisible spaces

Revision 1.10 / (download) - annotate - [select for diffs], Sat Feb 16 16:59:34 2019 UTC (5 years, 3 months ago) by florian
Branch: MAIN
Changes since 1.9: +15 -15 lines
Diff to previous 1.9 (colored)

sync with kristaps, commit 42166a639caa877efd91e73e288b89abf6b7cfd3
Remove spaces at end of line.

Revision 1.9 / (download) - annotate - [select for diffs], Sat Feb 16 16:58:39 2019 UTC (5 years, 3 months ago) by florian
Branch: MAIN
Changes since 1.8: +209 -62 lines
Diff to previous 1.8 (colored)

sync with kristaps, commit 1842d31d600f2834ae78fe0d99a29519a853d75c
Make sender mostly nonblocking for writes.  This takes a lot of logic once
in blocks.c and puts it directly into sender.c.  It allows running openrsync
against itself without deadlocks.

Revision 1.8 / (download) - annotate - [select for diffs], Sat Feb 16 16:57:17 2019 UTC (5 years, 3 months ago) by florian
Branch: MAIN
Changes since 1.7: +334 -71 lines
Diff to previous 1.7 (colored)

sync with kristaps, commit f5c1e234990877cd274b7bcdd4d9883104cd1568
Make sender have reentrant sending and prioritised reading.  This way,
the sender gets data off the wire as quickly as possible.  While here,
remove dead wood from blocks.c (blk_merge).

Revision 1.7 / (download) - annotate - [select for diffs], Sat Feb 16 05:06:30 2019 UTC (5 years, 3 months ago) by deraadt
Branch: MAIN
Changes since 1.6: +2 -2 lines
Diff to previous 1.6 (colored)

unwrap lines which do not need wrapping

Revision 1.6 / (download) - annotate - [select for diffs], Tue Feb 12 17:58:35 2019 UTC (5 years, 3 months ago) by benno
Branch: MAIN
Changes since 1.5: +2 -2 lines
Diff to previous 1.5 (colored)

sync, this also adds the -g option to the option parser.

commit c7818bfb17195fcd7b723889bb8652b9ea024b01
Author: kristaps <>
Date:   Mon Feb 11 23:26:55 2019 +0000

    Add getpw pledge for -g work.

Revision 1.5 / (download) - annotate - [select for diffs], Mon Feb 11 21:41:22 2019 UTC (5 years, 3 months ago) by deraadt
Branch: MAIN
Changes since 1.4: +7 -7 lines
Diff to previous 1.4 (colored)

swap comparison arguments as needed, to match idiomatic C most of us
are familiar with.  Proofed by florian and benno

Revision 1.4 / (download) - annotate - [select for diffs], Mon Feb 11 19:18:36 2019 UTC (5 years, 3 months ago) by deraadt
Branch: MAIN
Changes since 1.3: +18 -18 lines
Diff to previous 1.3 (colored)

cleanup weird spaces around !.  (We normalize source-code to a standard
idiom because it is less error prone for a larger team.  kristaps idiom
is highly divergent)
ok benno

Revision 1.3 / (download) - annotate - [select for diffs], Sun Feb 10 23:43:31 2019 UTC (5 years, 3 months ago) by benno
Branch: MAIN
Changes since 1.2: +2 -2 lines
Diff to previous 1.2 (colored)

canonical order of pledge()s.
stop at 80 char line lenght.

Revision 1.2 / (download) - annotate - [select for diffs], Sun Feb 10 23:24:14 2019 UTC (5 years, 3 months ago) by benno
Branch: MAIN
Changes since 1.1: +4 -4 lines
Diff to previous 1.1 (colored)

fix whitespace

Revision 1.1 / (download) - annotate - [select for diffs], Sun Feb 10 23:18:28 2019 UTC (5 years, 3 months ago) by benno
Branch: MAIN

Import Kristaps' openrsync into the tree.
OK deraadt@

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.