hopp: Point METADAPT implementations at new decoding functions
This commit is contained in:
parent
a59870cc69
commit
756bc79c16
13
metadapta.go
13
metadapta.go
@ -5,7 +5,6 @@ import "fmt"
|
||||
import "net"
|
||||
import "sync"
|
||||
import "sync/atomic"
|
||||
import "git.tebibyte.media/sashakoshka/hopp/tape"
|
||||
import "git.tebibyte.media/sashakoshka/go-util/sync"
|
||||
|
||||
// TODO investigate why 30 never reaches the server, causing it to wait for ever
|
||||
@ -406,9 +405,9 @@ func encodeMessageA(
|
||||
return ErrPayloadTooLarge
|
||||
}
|
||||
buffer := make([]byte, 18 + len(data))
|
||||
tape.EncodeI64(buffer[:8], trans)
|
||||
tape.EncodeI16(buffer[8:10], method)
|
||||
tape.EncodeI64(buffer[10:18], uint64(len(data)))
|
||||
encodeI64(buffer[:8], trans)
|
||||
encodeI16(buffer[8:10], method)
|
||||
encodeI64(buffer[10:18], uint64(len(data)))
|
||||
copy(buffer[18:], data)
|
||||
_, err := writer.Write(buffer)
|
||||
return err
|
||||
@ -427,11 +426,11 @@ func decodeMessageA(
|
||||
headerBuffer := [18]byte { }
|
||||
_, err = io.ReadFull(reader, headerBuffer[:])
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
transID, err = tape.DecodeI64[int64](headerBuffer[:8])
|
||||
transID, err = decodeI64[int64](headerBuffer[:8])
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
method, err = tape.DecodeI16[uint16](headerBuffer[8:10])
|
||||
method, err = decodeI16[uint16](headerBuffer[8:10])
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
size, err := tape.DecodeI64[uint64](headerBuffer[10:18])
|
||||
size, err := decodeI64[uint64](headerBuffer[10:18])
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
chunked, size = splitCCBSize(size)
|
||||
if size > uint64(sizeLimit) {
|
||||
|
@ -5,7 +5,6 @@ import "net"
|
||||
import "bytes"
|
||||
import "errors"
|
||||
import "context"
|
||||
import "git.tebibyte.media/sashakoshka/hopp/tape"
|
||||
|
||||
// B implements METADAPT-B over a multiplexed stream-oriented transport such as
|
||||
// QUIC.
|
||||
@ -165,8 +164,8 @@ func encodeMessageB(writer io.Writer, sizeLimit int64, method uint16, data []byt
|
||||
return ErrPayloadTooLarge
|
||||
}
|
||||
buffer := make([]byte, 10 + len(data))
|
||||
tape.EncodeI16(buffer[:2], method)
|
||||
tape.EncodeI64(buffer[2:10], uint64(len(data)))
|
||||
encodeI16(buffer[:2], method)
|
||||
encodeI64(buffer[2:10], uint64(len(data)))
|
||||
copy(buffer[10:], data)
|
||||
_, err := writer.Write(buffer)
|
||||
return err
|
||||
@ -187,9 +186,9 @@ func decodeMessageB(
|
||||
if errors.Is(err, io.EOF) { return 0, 0, nil, io.ErrUnexpectedEOF }
|
||||
return 0, 0, nil, err
|
||||
}
|
||||
method, err = tape.DecodeI16[uint16](headerBuffer[:2])
|
||||
method, err = decodeI16[uint16](headerBuffer[:2])
|
||||
if err != nil { return 0, 0, nil, err }
|
||||
length, err := tape.DecodeI64[uint64](headerBuffer[2:10])
|
||||
length, err := decodeI64[uint64](headerBuffer[2:10])
|
||||
if err != nil { return 0, 0, nil, err }
|
||||
if length > uint64(sizeLimit) {
|
||||
return 0, 0, nil, ErrPayloadTooLarge
|
||||
|
Loading…
x
Reference in New Issue
Block a user