upsertAlpnExtension method

void upsertAlpnExtension()

Replace or insert the ALPN extension (0x0010) based on alpn.

Implementation

void upsertAlpnExtension() {
  final protocols = alpn ?? <String>[];

  // Remove ALPN extension if empty
  if (protocols.isEmpty) {
    extensions.removeWhere((e) => e.type == 0x0010);
    return;
  }

  final extData = buildAlpnExtensionData(protocols);
  final idx = extensions.indexWhere((e) => e.type == 0x0010);

  final ext = TlsExtension(
    type: 0x0010,
    length: extData.length,
    data: extData,
  );

  if (idx >= 0) {
    extensions[idx] = ext;
  } else {
    extensions.add(ext);
  }
}