Don't abort() willy-nilly in SPTPS code.
If receive_handshake() or the receive_record() user callback returns an error, sptps_receive_data_datagram() crashes the entire process. This is heavy-handed, makes tinc very brittle to certain failures (i.e. unexpected packets), and is inconsistent with the rest of SPTPS code.
This commit is contained in:
parent
537c352886
commit
2e7f68ad2b
1 changed files with 2 additions and 2 deletions
|
@ -483,10 +483,10 @@ static bool sptps_receive_data_datagram(sptps_t *s, const char *data, size_t len
|
|||
if(!s->instate)
|
||||
return error(s, EIO, "Application record received before handshake finished");
|
||||
if(!s->receive_record(s->handle, type, buffer + 1, len - 21))
|
||||
abort();
|
||||
return false;
|
||||
} else if(type == SPTPS_HANDSHAKE) {
|
||||
if(!receive_handshake(s, buffer + 1, len - 21))
|
||||
abort();
|
||||
return false;
|
||||
} else {
|
||||
return error(s, EIO, "Invalid record type %d", type);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue