this might actually be cooking

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
Jens Langhammer
2025-05-15 01:53:14 +02:00
parent ae59a3e576
commit 8a80f07db2
2 changed files with 8 additions and 2 deletions

View File

@ -101,7 +101,9 @@ func (p *Payload) Handle(stt any) (*Payload, *State) {
err := st.TLS.HandshakeContext(st.Context)
if err != nil {
log.WithError(err).Debug("TLS: Handshake error")
return
}
st.HandshakeDone = true
}()
} else if len(p.Data) > 0 {
log.Debug("TLS: Updating buffer with new TLS data from packet")
@ -129,6 +131,9 @@ func (p *Payload) Handle(stt any) (*Payload, *State) {
if st.HasMore() {
return p.sendNextChunk(st)
}
if st.HandshakeDone {
// return
}
if len(st.Conn.OutboundData()) > 0 {
return p.startChunkedTransfer(st.Conn.OutboundData(), st)
}
@ -136,11 +141,11 @@ func (p *Payload) Handle(stt any) (*Payload, *State) {
}
func (p *Payload) startChunkedTransfer(data []byte, st *State) (*Payload, *State) {
flags := FlagLengthIncluded
flags := FlagNone
var dataToSend []byte
if len(data) > maxChunkSize {
log.WithField("length", len(data)).Debug("TLS: Data needs to be chunked")
flags += FlagMoreFragments
flags += FlagMoreFragments + FlagLengthIncluded
// Chunk data into correct chunks and add them to the list
st.RemainingChunks = append(st.RemainingChunks, slices.Collect(slices.Chunk(data, maxChunkSize))...)
dataToSend = st.RemainingChunks[0]

View File

@ -8,6 +8,7 @@ import (
type State struct {
HasStarted bool
RemainingChunks [][]byte
HandshakeDone bool
TotalPayloadSize int
TLS *tls.Conn
Conn *TLSConnection