docs: def getfield(self, pkt, s):
          """
          If the decryption of the content did not fail with a CipherError,
          we begin a loop on the clear content in order to get as much messages
          as possible, of the type advertised in the record header. This is
          notably important for several TLS handshake implementations, which
          may for instance pack a server_hello, a certificate, a
          server_key_exchange and a server_hello_done, all in one record.
          Each parsed message may update the TLS context through their method
          .post_dissection_tls_session_update().
  
          If the decryption failed with a CipherError, presumably because we
          missed the session keys, we signal it by returning a
          _TLSEncryptedContent packet which simply contains the ciphered data.
          """
          tmp_len = self.length_from(pkt)
          lst = []
          ret = b""
          remain = s
          if tmp_len is not None:
              remain, ret = s[:tmp_len], s[tmp_len:]
  
          if remain == b"":
              if (((pkt.tls_session.tls_version or 0x0303) > 0x0200) and
                      hasattr(pkt, "type") and pkt.type == 23):
                  return ret, [TLSApplicationData(data=b"")]
              else:
                  return ret, [Raw(load=b"")]
  
          if False in six.itervalues(pkt.tls_session.rcs.cipher.ready):
              return ret, _TLSEncryptedContent(remain)
          else:
              while remain:
                  raw_msg = remain
                  p = self.m2i(pkt, remain)
                  if Padding in p:
                      pad = p[Padding]
                      remain = pad.load
                      del(pad.underlayer.payload)
                      if len(remain) != 0:
                          raw_msg = raw_msg[:-len(remain)]
                  else:
                      remain = b""
  
                  if isinstance(p, _GenericTLSSessionInheritance):
                      if not p.tls_session.frozen:
                          p.post_dissection_tls_session_update(raw_msg)
  
                  lst.append(p)
              return remain + ret, lst