@section nncp-ack
@example
-$ nncp-ack [options] NODE [PKT|rx]
+$ nncp-ack [options] -all
+$ nncp-ack [options] -node NODE[,@dots{}]
+$ nncp-ack [options] -node NODE -pkt PKT
+
+$ nncp-ack [@dots{}] 4>&1 >&2 | nncp-rm [@dots{}] -pkt
@end example
-Sent acknowledgement of successful @option{PKT} (Base32-encoded hash)
-packet receipt. If @option{rx} is specified instead, then all
-@option{NODE}'s existing @code{rx} packets will be acknowledged.
+Send acknowledgement of successful @option{PKT} (Base32-encoded hash)
+packet receipt from @option{NODE} node. If no @option{-pkt} is
+specified, then acknowledge all packet in node's @code{rx} spool.
+If @option{-all} is specified, then do that for all nodes.
+
+That commands outputs list of created encrypted ACK packets
+(@code{NODE/PKT}) to @strong{4}th file descriptor. That output can be
+passed for example to @command{@ref{nncp-rm}} to remove them after
+transmission to not wait for acknowledgement and retransmission.
General workflow with acknowledgement is following, assuming that
Alice has some outbound packets for Bob:
@itemize
-@item Transfer an encrypted packets, without deleting them locally:
+@item Transfer encrypted packets, without deleting them locally:
@example
alice$ nncp-xfer -keep -tx -node bob /mnt/shared
That will also check if copied packets checksum is not mismatched.
-@item Create ACK packets of received ones:
+@item Create ACK packets of received ones, saving the list of encrypted
+ ACK packets:
@example
-bob$ nncp-ack alice rx
+bob$ nncp-ack -node alice 4>acks
@end example
@item Send those newly created packets back to Alice:
@example
-bob$ nncp-xfer -tx /mnt/shared
+bob$ nncp-xfer [-keep] -tx /mnt/shared
+@end example
+
+@item Remove them from outbound spool, because we expect no
+ acknowledgement for them:
+
+@example
+bob$ nncp-rm -node alice -pkt <acks
@end example
@item Get those acknowledgement packets and @ref{nncp-toss, toss} them: