+ a_warn("PEER", "-", "socket-read-error", "?ERRNO", A_END);
+ return;
+ }
+
+ /* --- If the packet is a greeting, don't check peers --- */
+
+ if (n && buf_i[0] == (MSG_MISC | MISC_GREET)) {
+ IF_TRACING(T_PEER, {
+ trace(T_PEER, "peer: greeting received from INET %s %u",
+ inet_ntoa(a.sin.sin_addr),
+ (unsigned)ntohs(a.sin.sin_port));
+ trace_block(T_PACKET, "peer: greeting contents", buf_i, n);
+ })
+ buf_init(&b, buf_i, n);
+ buf_getbyte(&b);
+ if (c_check(&b) || BLEFT(&b)) {
+ a_warn("PEER", "-", "invalid-greeting", A_END);
+ return;
+ }
+ a_notify("GREET",
+ "?B64", buf_i + 1, (size_t)(n - 1),
+ "?ADDR", &a,
+ A_END);