From 5c6357de8bda7c5fe0a7fa4ab31b365a9ae8e6fb Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 1 Jun 2015 01:32:57 +0200 Subject: [PATCH] devtls: ignore UnrecogniedName (112) alert message (for SNI) --- sys/src/9/port/devtls.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/sys/src/9/port/devtls.c b/sys/src/9/port/devtls.c index d0550a7aa..4cb30b371 100644 --- a/sys/src/9/port/devtls.c +++ b/sys/src/9/port/devtls.c @@ -73,6 +73,7 @@ enum { EInternalError = 80, EUserCanceled = 90, ENoRenegotiation = 100, + EUnrecognizedName = 112, EMAX = 256 }; @@ -850,18 +851,25 @@ if(tr->debug) pdump(unpad_len, p, "decrypted:"); /* * propagate non-fatal alerts to handshaker */ - if(p[1] == ECloseNotify) { + switch(p[1]){ + case ECloseNotify: tlsclosed(tr, SRClose); if(tr->opened) error("tls hungup"); error("close notify"); - } - if(p[1] == ENoRenegotiation) + break; + case ENoRenegotiation: alertHand(tr, "no renegotiation"); - else if(p[1] == EUserCanceled) + break; + case EUserCanceled: alertHand(tr, "handshake canceled by user"); - else + break; + case EUnrecognizedName: + /* happens in response to SNI, can be ignored. */ + break; + default: rcvError(tr, EIllegalParameter, "invalid alert code"); + } break; case RHandshake: /*