From f7e2020b5654d4261df289392437ab67cc151d89 Mon Sep 17 00:00:00 2001 From: thorkill Date: Tue, 10 May 2016 00:43:43 +0200 Subject: [PATCH] Allow PKT_PROBE in sptps_send_record sptps_send_record prevented PKT_PROBE to be send in send_sptps_packet. This occurred mostly when data was on "the wire" for some subnet. route() would then trigger try_tx/try_udp which would be dropped by sptps_send_record producing annoying amount of "Handshake phase not finished yet" log messages. --- src/sptps.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/sptps.c b/src/sptps.c index 712d50ea..dd08e65d 100644 --- a/src/sptps.c +++ b/src/sptps.c @@ -128,11 +128,13 @@ static bool send_record_priv(sptps_t *s, uint8_t type, const void *data, uint16_ // Send an application record. bool sptps_send_record(sptps_t *s, uint8_t type, const void *data, uint16_t len) { + + if((!s->outstate) && (type != PKT_PROBE)) + return error(s, EINVAL, "Handshake phase not finished yet (outstate:%x type: %d)", + s->outstate, type); + // Sanity checks: application cannot send data before handshake is finished, // and only record types 0..127 are allowed. - if(!s->outstate) - return error(s, EINVAL, "Handshake phase not finished yet"); - if(type >= SPTPS_HANDSHAKE) return error(s, EINVAL, "Invalid application record type");