static bool nc_conn_message(struct nc_conn *conn) { char *command = conn->msg.hdr.command; /* verify correct network */ if (memcmp(conn->msg.hdr.netmagic, conn->nci->chain->netmagic, 4)) { log_info("net: %s invalid network", conn->addr_str); return false; } /* incoming message: version */ if (!strncmp(command, "version", 12)) return nc_msg_version(conn); /* "version" must be first message */ if (!conn->seen_version) { log_info("net: %s 'version' not first", conn->addr_str); return false; } /* incoming message: verack */ if (!strncmp(command, "verack", 12)) return nc_msg_verack(conn); /* "verack" must be second message */ if (!conn->seen_verack) { log_info("net: %s 'verack' not second", conn->addr_str); return false; } /* incoming message: addr */ if (!strncmp(command, "addr", 12)) return nc_msg_addr(conn); /* incoming message: inv */ else if (!strncmp(command, "inv", 12)) return nc_msg_inv(conn); /* incoming message: block */ else if (!strncmp(command, "block", 12)) return nc_msg_block(conn); log_debug("net: %s unknown message %s", conn->addr_str, command); /* ignore unknown messages */ return true; }
static bool nc_conn_message(struct nc_conn *conn) { char *command = conn->msg.hdr.command; /* verify correct network */ if (memcmp(conn->msg.hdr.netmagic, chain->netmagic, 4)) { fprintf(plog, "net: %s invalid network\n", conn->addr_str); return false; } /* incoming message: version */ if (!strncmp(command, "version", 12)){ LOG("version command received from %s.", conn->addr_str); return nc_msg_version(conn); } /* "version" must be first message */ if (!conn->seen_version) { fprintf(plog, "net: %s 'version' not first\n", conn->addr_str); return false; } /* incoming message: verack */ if (!strncmp(command, "verack", 12)){ LOG("verack command received from %s.", conn->addr_str); return nc_msg_verack(conn); } /* "verack" must be second message */ if (!conn->seen_verack) { fprintf(plog, "net: %s 'verack' not second\n", conn->addr_str); return false; } /* incoming message: addr */ if (!strncmp(command, "addr", 12)){ LOG("addr command received from %s.", conn->addr_str); return nc_msg_addr(conn); } /* incoming message: inv */ else if (!strncmp(command, "inv", 12)){ LOG("inv command received from %s.", conn->addr_str); return nc_msg_inv(conn); } /* incoming message: block */ else if (!strncmp(command, "block", 12)){ LOG("block command received from %s.", conn->addr_str); return nc_msg_block(conn); } if (debugging) fprintf(plog, "net: %s unknown message %s\n", conn->addr_str, command); /* ignore unknown messages */ return true; }