parseAlpnExtensionData function

List<String> parseAlpnExtensionData(
  1. Uint8List data
)

Implementation

List<String> parseAlpnExtensionData(Uint8List data) {
  final buf = QuicBuffer(data: data);
  final protocols = <String>[];

  if (buf.remaining < 2) return protocols;

  final listLen = buf.pullUint16();
  final end = buf.readOffset + listLen;

  while (buf.readOffset < end && buf.remaining > 0) {
    final nameLen = buf.pullUint8();
    if (buf.remaining < nameLen) {
      throw StateError('ALPN extension truncated');
    }
    final nameBytes = buf.pullBytes(nameLen);
    protocols.add(utf8.decode(nameBytes, allowMalformed: true));
  }

  return protocols;
}