diff --git a/examples/client.cc b/examples/client.cc index c8fa1a70864b69993c0a9a95c7264e99fe55fa28..2c79b5672ede81e07da7af02d375d4c650eee98a 100644 --- a/examples/client.cc +++ b/examples/client.cc @@ -39,9 +39,14 @@ #include "template.h" #include "network.h" #include "debug.h" +#include "util.h" using namespace ngtcp2; +namespace { +auto randgen = util::make_mt19937(); +} // namespace + namespace { void *BIO_get_data(BIO *bio) { return bio->ptr; } void BIO_set_data(BIO *bio, void *ptr) { bio->ptr = ptr; } @@ -185,7 +190,8 @@ ssize_t send_client_initial(ngtcp2_conn *conn, uint32_t flags, return NGTCP2_ERR_CALLBACK_FAILURE; } - *ppkt_num = 1; + *ppkt_num = std::uniform_int_distribution<uint64_t>( + 0, std::numeric_limits<int32_t>::max())(randgen); auto len = c->read_client_handshake(pdest, maxdestlen); @@ -241,7 +247,10 @@ int Client::init(int fd) { debug::recv_pkt, debug::recv_frame, debug::handshake_completed, }; - rv = ngtcp2_conn_client_new(&conn_, 1, 1, &callbacks, this); + auto conn_id = std::uniform_int_distribution<uint64_t>( + 0, std::numeric_limits<uint64_t>::max())(randgen); + + rv = ngtcp2_conn_client_new(&conn_, conn_id, 1, &callbacks, this); if (rv != 0) { std::cerr << "ngtcp2_conn_client_new: " << rv << std::endl; return -1; diff --git a/examples/server.cc b/examples/server.cc index 70af4ad3bb78816612f0e66f47067897bd29b9c3..e92987b16dfd0d943ffa3cc35018c2b943b1a635 100644 --- a/examples/server.cc +++ b/examples/server.cc @@ -39,9 +39,14 @@ #include "template.h" #include "network.h" #include "debug.h" +#include "util.h" using namespace ngtcp2; +namespace { +auto randgen = util::make_mt19937(); +} // namespace + namespace { void *BIO_get_data(BIO *bio) { return bio->ptr; } void BIO_set_data(BIO *bio, void *ptr) { bio->ptr = ptr; } @@ -186,7 +191,8 @@ ssize_t send_server_cleartext(ngtcp2_conn *conn, uint32_t flags, } if (ppkt_num) { - *ppkt_num = 1; + *ppkt_num = std::uniform_int_distribution<uint64_t>( + 0, std::numeric_limits<int32_t>::max())(randgen); } auto len = h->read_server_handshake(pdest, maxdestlen); @@ -239,7 +245,10 @@ int Handler::init(int fd) { debug::handshake_completed, }; - rv = ngtcp2_conn_server_new(&conn_, 2, 1, &callbacks, this); + auto conn_id = std::uniform_int_distribution<uint64_t>( + 0, std::numeric_limits<uint64_t>::max())(randgen); + + rv = ngtcp2_conn_server_new(&conn_, conn_id, 1, &callbacks, this); if (rv != 0) { std::cerr << "ngtcp2_conn_server_new: " << rv << std::endl; return -1; diff --git a/examples/util.cc b/examples/util.cc index 9000a342c959d9ba78ef518acd50aa808187058a..417470723af5249a70503bc5e821f0afcd46da83 100644 --- a/examples/util.cc +++ b/examples/util.cc @@ -55,6 +55,11 @@ std::string format_hex(const uint8_t *s, size_t len) { return res; } +std::mt19937 make_mt19937() { + std::random_device rd; + return std::mt19937(rd()); +} + } // namespace util } // namespace ngtcp2 diff --git a/examples/util.h b/examples/util.h index b43e09fa17a916952bf47eb35ca92bd3b101dc54..945bc943b24c5c2b0f6aa95ab9b84766415e77ee 100644 --- a/examples/util.h +++ b/examples/util.h @@ -30,6 +30,7 @@ #endif // HAVE_CONFIG_H #include <string> +#include <random> #include <ngtcp2/ngtcp2.h> @@ -41,6 +42,8 @@ std::string format_hex(uint8_t c); std::string format_hex(const uint8_t *s, size_t len); +std::mt19937 make_mt19937(); + } // namespace util } // namespace ngtcp2;