]> Cypherpunks.ru repositories - nncp.git/blob - doc/news.texi
.nncp.meta must contain payload size, not the full one
[nncp.git] / doc / news.texi
1 @node News
2 @unnumbered News
3
4 See also this page @ref{Новости, on russian}.
5
6 @node Release 8_0_1
7 @section Release 8.0.1
8 @itemize
9
10 @item
11 Fixed incorrect @code{freq.chunked} value calculation. If it missed,
12 then anyway chunked transfer mode was forcefully turned on.
13
14 @item
15 Fixed incorrect full file's size calculation in @file{.nncp.meta}.
16
17 @end itemize
18
19 @node Release 8_0_0
20 @section Release 8.0.0
21 @itemize
22
23 @item
24 @strong{Incompatible} encrypted packet format change: payload and pad
25 sizes are sent in-bound in the encrypted stream. That gives ability to
26 streamingly create encrypted packets, without knowing sizes in advance,
27 without creating temporary file or buffer data in memory.
28
29 @item
30 Proper encrypted packet padding verification is done now. This is not
31 critical issue, but previously neither padding value, nor its size were
32 authenticated, giving ability to iteratively strip trailing bytes and
33 determine payload's size by observing the reaction of the encrypted
34 packet processing.
35
36 @item
37 @command{nncp-exec} loses its @option{-use-tmp} option, because of
38 streaming-compatible encrypted packets format.
39
40 @item
41 @command{nncp-file} and @command{nncp-exec} commands have
42 @option{-maxsize} option, limiting maximal resulting encrypted packet's
43 maximal size (returning error if it is exceeded). Could be useful,
44 because no payload size could be known in advance.
45
46 @end itemize
47
48 @node Release 7_7_0
49 @section Release 7.7.0
50 @itemize
51
52 @item
53 Experimental @code{kqueue} and @code{inotify} based notifications
54 support about spool directory changes, for reducing their often reading
55 overhead.
56
57 @item
58 @file{.seen} and @file{.hdr} files moved to @file{seen/} and @file{hdr/}
59 subdirectories, for faster scanning of spool directories.
60 Current files migration required:
61
62 @example
63 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
64
65 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
66     cd $rx
67     mkdir -p seen
68     find . -type f -name "*.seen" | while read fn ; do
69         mv $fn seen/$@{fn%.seen@}
70     done
71 done
72
73 $ find $NNCPSPOOL -type d -name area | while read area ; do
74     find $area -type f -name "*.seen" | while read fn ; do
75         mv $fn $@{fn%.seen@}
76     done
77 done
78 @end example
79
80 @end itemize
81
82 @node Release 7_6_0
83 @section Release 7.6.0
84 @itemize
85
86 @item
87 Logging may be done to specified opened file descriptor
88 (@env{$NNCPLOG=FD:5} for example).
89 That is friendly to use under @command{daemontools}.
90
91 @item
92 Added additional checks of public keys existence in configuration file,
93 preventing some commands from failing.
94
95 @end itemize
96
97 @node Release 7_5_1
98 @section Release 7.5.1
99 @itemize
100
101 @item
102 NNCP builds on NetBSD.
103
104 @end itemize
105
106 @node Release 7_5_0
107 @section Release 7.5.0
108 @itemize
109
110 @item
111 @command{nncp-daemon} is compatible with UCSPI-TCP interface, so log
112 will contain remote side's address (when running under appropriate
113 utility). @option{-ucspi} option should be used instead of @option{-inetd}.
114
115 @item
116 @command{nncp-call} can be UCSPI-TCP client, using @option{-ucspi} option.
117
118 @item
119 Do not exit if some of MCD network interfaces can not be listened --
120 only warn about that.
121
122 @end itemize
123
124 @node Release 7_4_0
125 @section Release 7.4.0
126 @itemize
127
128 @item
129 Fixed simultaneous @command{nncp-daemon} and @command{nncp-caller} MCD work.
130
131 @end itemize
132
133 @node Release 7_3_2
134 @section Release 7.3.2
135 @itemize
136
137 @item
138 @command{hjson-cli} utility builds in vendor-mode now.
139
140 @end itemize
141
142 @node Release 7_3_1
143 @section Release 7.3.1
144 @itemize
145
146 @item
147 Fixed possibly left opened file descriptor in online commands.
148
149 @item
150 Severely decreased memory usage of MTH hashing.
151
152 @end itemize
153
154 @node Release 7_3_0
155 @section Release 7.3.0
156 @itemize
157
158 @item
159 Fixed some workability problems on 32-bit systems with big files.
160
161 @item
162 Ability to use directory with a bunch of files as a configuration.
163 @command{nncp-cfgdir} command appeared.
164
165 @end itemize
166
167 @node Release 7_2_1
168 @section Release 7.2.1
169 @itemize
170
171 @item
172 Small optimizations in online commands.
173
174 @end itemize
175
176 @node Release 7_2_0
177 @section Release 7.2.0
178 @itemize
179
180 @item
181 @command{nncp-trns} command appeared for manual transition packets creation.
182
183 @item
184 If destination node of transitional packet has non empty @option{via}
185 route, then do not ignore, but use it.
186
187 @item
188 Do not relay multicast packet to area message's originator, that
189 obviously has seen its own packet.
190
191 @item
192 Much less memory usage during MTH hashing when offset is zero: when
193 packet is not resumed, but for example checked with @command{nncp-check}
194 command.
195
196 @end itemize
197
198 @node Release 7_1_1
199 @section Release 7.1.1
200 @itemize
201
202 @item
203 Fixed failing directories fsync after @file{.seen} file creation.
204
205 @end itemize
206
207 @node Release 7_1_0
208 @section Release 7.1.0
209 @itemize
210
211 @item
212 Multicasting areas feature appeared. Implemented merely by an additional
213 plain packet type with @command{nncp-toss}, @command{nncp-file} and
214 @command{nncp-exec} commands modification.
215
216 @item
217 Fixed workability of @command{nncp-file} and @command{nncp-exec}
218 commands, that use temporary file (stdin and @option{-use-tmp}).
219
220 @item
221 Fixed disappearing bad return code in @command{nncp-exec} command.
222
223 @item
224 Fixed invalid @file{.hdr} generation when transitional packets are used.
225
226 @item
227 @option{-all} option appeared in @command{nncp-rm} command, applying to
228 all the nodes at once.
229
230 @item
231 @option{-cycle} option appeared in @command{nncp-check} command, looping
232 the check in infinite cycle.
233
234 @item
235 @command{nncp-rm} command can take node alias name.
236
237 @item
238 @command{nncp-pkt} can parse @file{.hdr} files.
239
240 @end itemize
241
242 @node Release 7_0_0
243 @section Release 7.0.0
244 @itemize
245
246 @item
247 Minimal required Go version 1.13.
248
249 @item
250 Merkle Tree-based Hashing with BLAKE3 (MTH) is used instead of BLAKE2b.
251 Because of that, there are backward @strong{incompatible} changes of
252 encrypted files (everything laying in the spool directory) and
253 @file{.meta} files of chunked transfer.
254
255 Current implementation is far from being optimal: it lacks
256 parallelizable calculations and has higher memory consumption: nearly
257 512 KiB for each 1 GiB of file's data. Future performance and memory
258 size optimizations should not lead to packet's format change. But it is
259 still several times faster than BLAKE2b.
260
261 @item
262 Resumed online downloads, because of MTH, require reading only of the
263 preceding part of file, not the whole one as was before.
264
265 @item
266 @command{nncp-hash} utility appeared for calculating file's MTH hash.
267
268 @item
269 BLAKE2 KDF and XOF functions are replaced with BLAKE3 in encrypted
270 packets. Lowering number of used primitives. Also, its encrypted
271 packet's header is used as an associated data during encryption.
272
273 @item
274 MultiCast Discovery uses
275 @verb{|ff02::4e4e:4350|} address instead of @verb{|ff02::1|}.
276
277 @item
278 @command{nncp-cfgenc} mistakenly asked passphrase three times during encryption.
279
280 @item
281 @command{nncp-stat} reports about partly downloaded packets.
282
283 @item
284 Updated dependencies.
285
286 @end itemize
287
288 @node Release 6_6_0
289 @section Release 6.6.0
290 @itemize
291
292 @item
293 @command{nncp-daemon}, @command{nncp-call} and @command{nncp-caller}
294 commands wait for all background checksummers completion after
295 connection is finished.
296
297 @item
298 Added possibility of address determining through multicast announcement
299 in local area network, so called MCD (MultiCast Discovery).
300
301 @end itemize
302
303 @node Release 6_5_0
304 @section Release 6.5.0
305 @itemize
306
307 @item
308 Fixed segfault in @command{nncp-daemon} when SP handshake did not succeed.
309
310 @item
311 Fixed possible bad return code ignoring in automatic tosser.
312
313 @item
314 Fixed race during file descriptors closing when online protocol call is
315 finished, that could lead to write error of received packet fragment.
316
317 @item
318 Kill all packet transmission progress bars in @command{nncp-daemon},
319 @command{nncp-call} and @command{nncp-caller} when call is finished.
320
321 @end itemize
322
323 @node Release 6_4_0
324 @section Release 6.4.0
325 @itemize
326
327 @item
328 Fixed possible race in online protocol, that lead to panic.
329
330 @end itemize
331
332 @node Release 6_3_0
333 @section Release 6.3.0
334 @itemize
335
336 @item
337 Fixed possible panic while showing progress during online protocol.
338
339 @end itemize
340
341 @node Release 6_2_1
342 @section Release 6.2.1
343 @itemize
344
345 @item
346 Three places in logs contained excess @code{%s}.
347
348 @end itemize
349
350 @node Release 6_2_0
351 @section Release 6.2.0
352 @itemize
353
354 @item
355 Returned @command{nncp-caller}'s @option{-autotoss*} options workability.
356
357 @item
358 Yet another logging refactoring and simplification.
359 Should be no visible differences to the end user.
360
361 @end itemize
362
363 @node Release 6_1_0
364 @section Release 6.1.0
365 @itemize
366
367 @item
368 Optimization: most commands do not keep opened file descriptors now.
369 Previously you can exceed maximal number of opened files if you have got
370 many packets in the spool directory.
371
372 @item
373 Optimization: do not close file descriptor of the file we download
374 online. Previously each chunk lead to expensive open/close calls.
375
376 @item
377 Online downloaded files are saved with @file{.nock} (non-checksummed)
378 suffix, waiting either for @command{nncp-check}, or online daemons to
379 perform integrity check.
380
381 @item
382 Optimization: files, that are not resumed, are checksummed immediately
383 during the online download, skipping @file{.nock}-intermediate step.
384
385 @item
386 Ability to store encrypted packet's header in @file{.hdr} file, close to
387 the packet itself. That can greatly increase performance of packets
388 listing on filesystems with big block's size.
389
390 @end itemize
391
392 @node Release 6_0_0
393 @section Release 6.0.0
394 @itemize
395
396 @item
397 Log uses human readable and easy machine parseable
398 @url{https://www.gnu.org/software/recutils/, recfile} format for the
399 records, instead of structured RFC 3339 lines. Old logs are not readable
400 by @command{nncp-log} anymore.
401
402 @item
403 @option{-autotoss*} option workability with @command{nncp-daemon}'s
404 @option{-inetd} mode.
405
406 @item
407 Call's @option{when-tx-exists} allows to make a call only when outbound
408 packets exists. Combined with seconds-aware cron expression that can be
409 used as some kind of auto dialler.
410
411 @item
412 @command{nncp-cronexpr} command allows you to check validity and
413 expectations of specified cron expression.
414
415 @end itemize
416
417 @node Release 5_6_0
418 @section Release 5.6.0
419 @itemize
420
421 @item
422 @option{-autotoss*} option runs tosser not after the call, but every
423 second while it is active.
424
425 @item
426 @option{autotoss}, @option{autotoss-doseen},
427 @option{autotoss-nofile}, @option{autotoss-nofreq},
428 @option{autotoss-noexec}, @option{autotoss-notrns} options available in
429 @option{calls} configuration section. You can configure per-call
430 automatic tosser options.
431
432 @item
433 Use vendoring, instead of @env{$GOPATH} overriding during tarball
434 installation, because current minimal Go's version is 1.12 and it
435 supports modules.
436
437 @end itemize
438
439 @node Release 5_5_1
440 @section Release 5.5.1
441 @itemize
442
443 @item
444 Respect for @env{$BINDIR}, @env{$INFODIR} and @env{$DOCDIR} environment
445 variables in @file{config} during installation.
446
447 @end itemize
448
449 @node Release 5_5_0
450 @section Release 5.5.0
451 @itemize
452
453 @item
454 Bugfixes in @command{nncp-call(er)}/@command{nncp-daemon},
455 @command{nncp-bundle} and @command{nncp-stat}.
456
457 @item
458 @command{nncp-rm} has @option{-dryrun} and @option{-older} options now.
459
460 @item
461 @command{nncp-exec} has @option{-use-tmp} and @option{-nocompress}
462 options now. Uncompressed packets are not compatible with previous NNCP
463 versions.
464
465 @item
466 @command{nncp-call}, @command{nncp-caller} and @command{nncp-daemon} commands
467 have @option{-autotoss*} options for running tosser after call is ended.
468
469 @item
470 Updated dependencies. Minimal required Go version is 1.12.
471
472 @end itemize
473
474 @node Release 5_4_1
475 @section Release 5.4.1
476 @itemize
477
478 @item
479 Fixed @code{SENDMAIL} variable usage during the build.
480
481 @end itemize
482
483 @node Release 5_4_0
484 @section Release 5.4.0
485 @itemize
486
487 @item
488 Updated dependencies.
489
490 @item
491 Build system is moved from Makefiles to @url{http://cr.yp.to/redo.html, redo}.
492 This should not influence package maintainers, because minimal @command{redo}
493 implementation is included in tarball.
494
495 @end itemize
496
497 @node Release 5_3_3
498 @section Release 5.3.3
499 @itemize
500
501 @item
502 More various error checks.
503
504 @item
505 Updated dependencies.
506
507 @end itemize
508
509 @node Release 5_3_2
510 @section Release 5.3.2
511 @itemize
512
513 @item
514 Fixed incorrect logic of @option{onlinedeadline} timeout, where
515 connection won't take into account incoming packets events and will
516 forcefully disconnect.
517
518 @end itemize
519
520 @node Release 5_3_1
521 @section Release 5.3.1
522 @itemize
523
524 @item
525 Fixed @option{onlinedeadline} workability with call addresses that use
526 external commands (@verb{#"|somecmd"#}).
527
528 @item
529 @command{nncp-stat} has @option{-pkt} option displaying information
530 about each packet in the spool.
531
532 @end itemize
533
534 @node Release 5_3_0
535 @section Release 5.3.0
536 @itemize
537
538 @item
539 Progress messages contain prefix, describing the running action.
540
541 @item
542 Fixed not occurring handshake messages padding.
543
544 @item
545 Finish all SP protocol related goroutines, less memory leak.
546
547 @item
548 SP protocol generates less socket write calls, thus generating less TCP
549 packets.
550
551 @item
552 Check @option{onlinedeadline} and @option{maxonlinetime} options every
553 second, independently from socket reads (up to 10 seconds).
554
555 @item
556 Once per minute, if no other traffic exists, PING packets are sent in
557 SP-connection. That allows faster determining of connection unworkability.
558
559 @item
560 @command{nncp-toss} uses lock-file to prevent simultaneous tossing.
561
562 @end itemize
563
564 @node Release 5_2_1
565 @section Release 5.2.1
566 @itemize
567
568 @item
569 Fixed SP protocol error handling, sometimes causing program panic.
570
571 @end itemize
572
573 @node Release 5_2_0
574 @section Release 5.2.0
575 @itemize
576
577 @item
578 Most commands by default show oneline operations progress.
579 @option{-progress}, @option{-noprogress} command line options,
580 @option{noprogress} configuration file option appeared.
581
582 @item
583 Fixed incorrect @command{nncp-check} command return code, that returned
584 bad code when everything is good.
585
586 @item
587 Free disk space check during @command{nncp-bundle -rx} call.
588
589 @end itemize
590
591 @node Release 5_1_2
592 @section Release 5.1.2
593 @itemize
594
595 @item
596 @strong{Critical} vulnerability: remote peers authentication could lead
597 to incorrect identification of remote side, allowing foreign encrypted
598 packets downloading.
599
600 @item
601 Bugfix: private and public Noise keys were swapped in newly created
602 configuration files, that lead to inability to authenticate online peers.
603
604 @item
605 Explicit directories fsync-ing for guaranteed files renaming.
606
607 @end itemize
608
609 @node Release 5_1_1
610 @section Release 5.1.1
611 @itemize
612
613 @item
614 Fixed workability of @command{nncp-file} with @option{-chunked 0} option.
615
616 @end itemize
617
618 @node Release 5_1_0
619 @section Release 5.1.0
620 @itemize
621
622 @item
623 @command{nncp-file} can send directories, automatically creating pax
624 archive on the fly.
625
626 @item
627 Free disk space is checked during outbound packets creation.
628
629 @item
630 @option{freq}, @option{freqminsize}, @option{freqchunked} configuration
631 file options replaced with the structure:
632 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
633
634 @item
635 Added @option{freq.maxsize} configuration file option, forbidding of
636 freq sending larger than specified size.
637
638 @item
639 Ability to notify about successfully executed commands (exec) with
640 @option{notify.exec} configuration file option.
641
642 @end itemize
643
644 @node Release 5_0_0
645 @section Release 5.0.0
646 @itemize
647
648 @item
649 @strong{Incompatible} configuration file format change: YAML is
650 replaced with Hjson, due to its simplicity, without noticeable lack
651 of either functionality or convenience.
652
653 @item
654 @strong{Incompatible} plain packet format changes. Older versions are
655 not supported. @code{zlib} compression is replaced with
656 @code{Zstandard}, due to its speed and efficiency, despite library
657 version is not mature enough.
658
659 @item
660 Ability to call remote nodes via pipe call of external command, not only
661 through TCP.
662
663 @item
664 @command{nncp-cfgnew} generates configuration file with many
665 comments. @option{-nocomments} option can be used for an old
666 behaviour.
667
668 @item
669 Duplicate filenames have @file{.CTR} suffix, instead of @file{CTR}, to
670 avoid possible collisions with @file{.nncp.chunkCTR}.
671
672 @item
673 Ability to override process umask through configuration file option.
674
675 @item
676 Files and directories are created with 666/777 permissions by default,
677 allowing control with @command{umask}.
678
679 @item
680 Updated dependencies.
681
682 @item
683 Full usage of go modules for dependencies management
684 (@code{go.cypherpunks.ru/nncp/v5} namespace is used).
685
686 @item
687 Forbid any later GNU GPL version autousage
688 (project's licence now is GNU GPLv3-only).
689
690 @end itemize
691
692 @node Release 4_1
693 @section Release 4.1
694 @itemize
695 @item Workability on GNU/Linux systems and Go 1.10 is fixed.
696 @end itemize
697
698 @node Release 4_0
699 @section Release 4.0
700 @itemize
701
702 @item
703 @strong{Incompatible} encrypted and eblob packet format change: AEAD
704 encryption mode with 128 KiB blocks is used now, because previously
705 @command{nncp-toss} did not verify encrypted packet's MAC before feeding
706 decrypted data to external command. Older versions are not supported.
707
708 @item
709 Available free space checking before copying in @command{nncp-xfer},
710 @command{nncp-daemon}, @command{nncp-call(er)}.
711
712 @item
713 @command{nncp-call} has ability only to list packets on remote node,
714 without their transmission.
715
716 @item
717 @command{nncp-call} has ability to transfer only specified packets.
718
719 @item
720 Workability of @option{xxrate} preference in @option{calls}
721 configuration file section.
722
723 @item
724 Dependant libraries are updated.
725
726 @item
727 Minor bugfixes.
728
729 @item
730 Begin using of @code{go.mod} subsystem.
731
732 @end itemize
733
734 @node Release 3_4
735 @section Release 3.4
736 @itemize
737 @item @command{nncp-daemon} can be run as @command{inetd}-service.
738 @end itemize
739
740 @node Release 3_3
741 @section Release 3.3
742 @itemize
743
744 @item
745 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller} check
746 if @file{.seen} exists and treat it like file was already downloaded.
747 Possibly it was transferred out-of-bound and remote side needs to be
748 notifier about that.
749
750 @item
751 If higher priority packet is spooled, then @command{nncp-daemon} will
752 queue its sending first, interrupting lower priority transmissions.
753
754 @item
755 Simple packet rate limiter added to online-related tools
756 (@command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}).
757
758 @item
759 Ability to specify niceness with symbolic notation:
760 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, etc.
761
762 @item
763 Changed default niceness levels:
764 for @command{nncp-exec} from 64 to 96,
765 for @command{nncp-freq} from 64 to 160,
766 for @command{nncp-file} from 196 to 224.
767
768 @end itemize
769
770 @node Release 3_2
771 @section Release 3.2
772 @itemize
773 @item
774 @strong{Incompatible} @emph{bundle} archive format changes and
775 @command{nncp-bundle} workability with Go 1.10+. Bundles must be
776 valid tar archives, but Go 1.9 made them invalid because of long paths
777 inside. NNCP accidentally was dependant on that bug. Explicit adding of
778 @file{NNCP/} directory in archive restores workability with valid tar
779 archives.
780 @end itemize
781
782 @node Release 3_1
783 @section Release 3.1
784 @itemize
785 @item
786 Ability to disable relaying at all using @verb{|-via -|} command line option.
787 @end itemize
788
789 @node Release 3_0
790 @section Release 3.0
791 @itemize
792
793 @item
794 @strong{Incompatible} plain packet format changes. Older versions are
795 not supported.
796
797 @item
798 Ability to queue remote command execution, by configuring @option{exec}
799 option in configuration file and using @command{nncp-exec} command:
800     @itemize
801     @item
802     @command{nncp-mail} command is replaced with more flexible
803     @command{nncp-exec}. Instead of @verb{|nncp-mail NODE RECIPIENT|}
804     you must use @verb{|nncp-exec NODE sendmail RECIPIENT|}.
805     @item
806     @option{sendmail} configuration file option is replaced with
807     @option{exec}. @verb{|sendmail: [...]|} must be replaced with
808     @verb{|exec: sendmail: [...]|}.
809     @end itemize
810
811 @item
812 Ability to override @option{via} configuration option for destination
813 node via @option{-via} command line option for following commands:
814 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
815
816 @item
817 Chunked files, having size less than specified chunk size, will be sent
818 as an ordinary single file.
819
820 @item
821 Exec commands are invoked with additional @env{$NNCP_NICE} and
822 @env{$NNCP_SELF} environment variables.
823
824 @item
825 Files, that are sent as a reply to freq, have niceness level taken from
826 the freq packet. You can set desired niceness during @command{nncp-freq}
827 invocation using @option{-replynice} option.
828
829 @item
830 @command{nncp-toss} command can ignore specified packet types during
831 processing: @option{-nofile}, @option{-nofreq}, @option{-noexec},
832 @option{-notrns}.
833
834 @item
835 @command{nncp-file} command uses
836 @option{FreqMinSize}/@option{FreqChunked} configuration file options
837 for @option{-minsize}/@option{-chunked} by default. You can turn this
838 off by specifying zero value.
839
840 @end itemize
841
842 @node Release 2_0
843 @section Release 2.0
844 @itemize
845
846 @item
847 @strong{Incompatible} encrypted/eblob packet format changes. Older
848 versions are not supported.
849
850 @item
851 Twofish encryption algorithm is replaced with ChaCha20. It is much more
852 faster. One cryptographic primitive less.
853
854 @item
855 HKDF-BLAKE2b-256 KDF algorithm is replaced with BLAKE2Xb XOF. Yet
856 another cryptographic primitive less (assuming that BLAKE2X is nearly
857 identical to BLAKE2).
858
859 @end itemize
860
861 @node Release 1_0
862 @section Release 1.0
863 @itemize
864
865 @item
866 @strong{Incompatible} encrypted packet format changes. Older versions
867 are not supported.
868
869 @item
870 @command{nncp-bundle} command can either create stream of encrypted
871 packets, or digest it. It is useful when dealing with
872 @code{stdin}/@code{stdout} based transmission methods (like writing to
873 CD-ROM without intermediate prepared ISO image and working with tape
874 drives).
875
876 @item
877 @command{nncp-toss} is able to create @file{.seen} files preventing
878 duplicate packets receiving.
879
880 @item
881 Single background checksum verifier worker is allowed in
882 @command{nncp-call}. This is helpful when thousands of small inbound
883 packets could create many goroutines.
884
885 @item
886 Ability to override path to spool directory and logfile through either
887 command line argument, or environment variable.
888
889 @item
890 @command{nncp-rm} is able to delete outbound/inbound, @file{.seen},
891 @file{.part}, @file{.lock} and temporary files.
892
893 @end itemize
894
895 @node Release 0_12
896 @section Release 0.12
897 @itemize
898 @item Sendmail command is called with @env{$NNCP_SENDER} environment variable.
899 @end itemize
900
901 @node Release 0_11
902 @section Release 0.11
903 @itemize
904 @item @command{nncp-stat}'s command output is sorted by node name.
905 @end itemize
906
907 @node Release 0_10
908 @section Release 0.10
909 @itemize
910 @item
911 @command{nncp-freq}'s @file{DST} argument is optional now. Last
912 @file{SRC} path's element will be used by default.
913 @end itemize
914
915 @node Release 0_9
916 @section Release 0.9
917 @itemize
918 @item
919 Fix @option{-rx}/@option{-tx} arguments processing in
920 @command{nncp-call} command. They were ignored.
921 @end itemize
922
923 @node Release 0_8
924 @section Release 0.8
925 @itemize
926 @item
927 Little bugfix in @command{nncp-file} command, where @option{-minsize}
928 option for unchunked transfer was not in KiBs, but in bytes.
929 @end itemize
930
931 @node Release 0_7
932 @section Release 0.7
933 @itemize
934
935 @item
936 Ability to feed @command{nncp-file} from @code{stdin}, that uses an
937 encrypted temporary file for that.
938
939 @item
940 Chunked files transmission appeared with corresponding
941 @command{nncp-reass} command and @option{freqchunked} configuration file
942 entry. Useful for transferring big files over small storage devices.
943
944 @item
945 @option{freqminsize} configuration file option, analogue to
946 @option{-minsize} one.
947
948 @item
949 @command{nncp-xfer}'s @option{-force} option is renamed to
950 @option{-mkdir} for clarity.
951
952 @item
953 @option{-minsize} option is specified in KiBs, not bytes, for
954 convenience.
955
956 @item
957 @command{nncp-newcfg} command is renamed to @command{nncp-cfgnew},
958 and @command{nncp-mincfg} to @command{nncp-cfgmin} -- now they have
959 common prefix and are grouped together for convenience.
960
961 @item
962 @command{nncp-cfgenc} command appeared, allowing configuration file
963 encryption/decryption, for keeping it safe without any either OpenPGP or
964 similar tools usage.
965
966 @item
967 Cryptographic libraries (dependencies) are updated.
968
969 @end itemize
970
971 @node Release 0_6
972 @section Release 0.6
973 @itemize
974 @item Small @command{nncp-rm} command appeared.
975 @item Cryptographic libraries (dependencies) are updated.
976 @end itemize
977
978 @node Release 0_5
979 @section Release 0.5
980 @itemize
981 @item
982 Trivial small fix in default niceness level of @command{nncp-file}
983 and @command{nncp-freq} commands.
984 @end itemize
985
986 @node Release 0_4
987 @section Release 0.4
988 @itemize
989
990 @item
991 Small fix in @command{nncp-call}, @command{nncp-caller},
992 @command{nncp-daemon}: they can segmentation fail sometimes (no data is
993 lost).
994
995 @item
996 @command{nncp-newnode} renamed to @command{nncp-newcfg} -- it is shorter
997 and more convenient to use.
998
999 @item
1000 @command{nncp-mincfg} command appeared: helper allowing to create
1001 minimalistic stripped down configuration file without private keys, that
1002 is useful during @command{nncp-xfer} usage.
1003
1004 @end itemize
1005
1006 @node Release 0_3
1007 @section Release 0.3
1008 @itemize
1009 @item Fixed compatibility with Go 1.6.
1010 @end itemize
1011
1012 @node Release 0_2
1013 @section Release 0.2
1014 @itemize
1015
1016 @item
1017 @strong{Incompatible} packet's format change (magic number is changed
1018 too): size field is encrypted and is not send in plaintext anymore.
1019
1020 @item
1021 @option{-minsize} option gives ability to automatically pad outgoing
1022 packets to specified minimal size.
1023
1024 @item
1025 @command{nncp-daemon} and @command{nncp-call}/@command{nncp-caller}
1026 always check new @emph{tx} packets appearance in the background while
1027 connected. Remote side is immediately notified.
1028
1029 @item
1030 @option{-onlinedeadline} option gives ability to configure timeout of
1031 inactivity of online connection, when it could be disconnected. It could
1032 be used to keep connection alive for a long time.
1033
1034 @item
1035 @option{-maxonlinetime} option gives ability to set maximal allowable
1036 online connection aliveness time.
1037
1038 @item
1039 @command{nncp-caller} command appeared: cron-ed TCP daemon caller.
1040
1041 @item
1042 @command{nncp-pkt} command can decompress the data.
1043
1044 @end itemize