@@ -433,31 +433,27 @@ func (p *proxyapp) colorizeTunnel(req, resp layers.Layer, sniffheader *[]string,
433433 case * layers.TLSMessage :
434434 var chs * layers.TLSClientHello
435435 var shs * layers.TLSServerHello
436- if len (reqt .Records ) > 0 {
437- hsrec := reqt .Records [0 ]
438- if hsrec .ContentType == layers .HandshakeTLSVal { // TODO: add more cases, parse all records
439- switch parser := layers .HSTLSParserByType (hsrec .Data [0 ]).(type ) {
440- case * layers.TLSClientHello :
441- err := parser .ParseHS (hsrec .Data )
442- if err != nil {
443- return err
444- }
445- chs = parser
436+ hsrec := reqt .Records [0 ] // len(Records) > 0 after dispatch
437+ if hsrec .ContentType == layers .HandshakeTLSVal { // TODO: add more cases, parse all records
438+ switch parser := layers .HSTLSParserByType (hsrec .Data [0 ]).(type ) {
439+ case * layers.TLSClientHello :
440+ err := parser .ParseHS (hsrec .Data )
441+ if err != nil {
442+ return err
446443 }
444+ chs = parser
447445 }
448446 }
449447 rest := resp .(* layers.TLSMessage )
450- if len (rest .Records ) > 0 {
451- hsrec := rest .Records [0 ]
452- if hsrec .ContentType == layers .HandshakeTLSVal {
453- switch parser := layers .HSTLSParserByType (hsrec .Data [0 ]).(type ) {
454- case * layers.TLSServerHello :
455- err := parser .ParseHS (hsrec .Data )
456- if err != nil {
457- return err
458- }
459- shs = parser
448+ hsrec = rest .Records [0 ]
449+ if hsrec .ContentType == layers .HandshakeTLSVal {
450+ switch parser := layers .HSTLSParserByType (hsrec .Data [0 ]).(type ) {
451+ case * layers.TLSServerHello :
452+ err := parser .ParseHS (hsrec .Data )
453+ if err != nil {
454+ return err
460455 }
456+ shs = parser
461457 }
462458 }
463459 if chs != nil && shs != nil {
@@ -1045,7 +1041,7 @@ func dispatch(data []byte) (layers.Layer, error) {
10451041 return h , nil
10461042 }
10471043 m := & layers.TLSMessage {}
1048- if err := m .Parse (data ); err == nil {
1044+ if err := m .Parse (data ); err == nil && len ( m . Records ) > 0 {
10491045 return m , nil
10501046 }
10511047 return nil , fmt .Errorf ("failed sniffing traffic" )
0 commit comments