#include <vector>
#include <memory>
#include <string>
-#include <random>
#include <openssl/ssl.h>
#include <openssl/tls1.h>
#include <folly/folly-config.h>
#endif
-#include <folly/Random.h>
-
namespace folly {
/**
std::list<std::string> protocols;
};
+ struct AdvertisedNextProtocolsItem {
+ unsigned char* protocols;
+ unsigned length;
+ double probability;
+ };
+
// Function that selects a client protocol given the server's list
using ClientProtocolFilterCallback = bool (*)(unsigned char**, unsigned int*,
const unsigned char*, unsigned int);
static bool initialized_;
#ifdef OPENSSL_NPN_NEGOTIATED
-
- struct AdvertisedNextProtocolsItem {
- unsigned char* protocols;
- unsigned length;
- };
-
/**
* Wire-format list of advertised protocols for use in NPN.
*/
std::vector<AdvertisedNextProtocolsItem> advertisedNextProtocols_;
- std::vector<int> advertisedNextProtocolWeights_;
- std::discrete_distribution<int> nextProtocolDistribution_;
- Random::DefaultGenerator nextProtocolPicker_;
-
static int sNextProtocolsExDataIndex_;
static int advertisedNextProtocolCallback(SSL* ssl,