if(c->outgoing && c->outgoing->timeout) {
c->outgoing->timeout = 0;
- reset_address_cache(c->outgoing->node->address_cache, &c->address);
+ reset_address_cache(c->node->address_cache);
+ add_recent_address(c->node->address_cache, &c->address);
}
return true;
bool tcppacket_h(connection_t *c, const char *request) {
short int len;
- if(sscanf(request, "%*d %hd", &len) != 1) {
+ if(sscanf(request, "%*d %hd", &len) != 1 || len < 0) {
logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s)", "PACKET", c->name,
c->hostname);
return false;
bool sptps_tcppacket_h(connection_t *c, const char *request) {
short int len;
- if(sscanf(request, "%*d %hd", &len) != 1) {
+ if(sscanf(request, "%*d %hd", &len) != 1 || len < 0) {
logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s)", "SPTPS_PACKET", c->name,
c->hostname);
return false;