дескриптор (@env{$NNCPLOG=FD:5} например).
Что дружелюбно к использованию под @command{daemontools}.
+@item
+Добавлены дополнительные проверки наличия публичных ключей в
+конфигурационном файле, предотвращающие падения некоторых команд.
+
@end itemize
@node Релиз 7.5.1
(@env{$NNCPLOG=FD:5} for example).
That is friendly to use under @command{daemontools}.
+@item
+Added additional checks of public keys existence in configuration file,
+preventing some commands from failing.
+
@end itemize
@node Release 7_5_1
"bytes"
"encoding/json"
"errors"
+ "fmt"
"log"
"os"
"path"
copy(area.Pub[:], pub)
}
if cfg.Prv != nil {
+ if area.Pub == nil {
+ return nil, fmt.Errorf("area %s: prv requires pub presence", name)
+ }
prv, err := Base32Codec.DecodeString(*cfg.Prv)
if err != nil {
return nil, err
if err != nil {
log.Fatalln("Invalid NODE specified:", err)
}
+ if node.NoisePub == nil {
+ log.Fatalln("Node", nodeId, "does not have online communication capability")
+ }
if len(node.Calls) == 0 {
ctx.LogD(
"caller-no-calls",
var node *Node
for _, n := range state.Ctx.Neigh {
+ if n.NoisePub == nil {
+ continue
+ }
if subtle.ConstantTimeCompare(state.hs.PeerStatic(), n.NoisePub[:]) == 1 {
node = n
break
if areaId != nil {
area = ctx.AreaId2Area[*areaId]
if area.Prv == nil {
- return nil, errors.New("unknown area id")
+ return nil, errors.New("area has no encryption keys")
}
}
hops := make([]*Node, 0, 1+len(node.Via))