From 66d42d50fe06dbd69ab067ef19db9fe87915aee5 Mon Sep 17 00:00:00 2001
From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
Date: Wed, 5 Aug 2020 19:55:26 +0900
Subject: [PATCH] Remove conn and user_data from ngtcp2_rand

Remove conn and user_data from ngtcp2_rand in order to use it before
conn is initialized.
---
 examples/client.cc           | 3 +--
 examples/server.cc           | 3 +--
 lib/includes/ngtcp2/ngtcp2.h | 3 +--
 lib/ngtcp2_conn.c            | 4 ++--
 tests/ngtcp2_conn_test.c     | 5 +----
 5 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/examples/client.cc b/examples/client.cc
index bb912393..b674180d 100644
--- a/examples/client.cc
+++ b/examples/client.cc
@@ -621,8 +621,7 @@ int extend_max_streams_bidi(ngtcp2_conn *conn, uint64_t max_streams,
 } // namespace
 
 namespace {
-int rand(ngtcp2_conn *conn, uint8_t *dest, size_t destlen, ngtcp2_rand_ctx ctx,
-         void *user_data) {
+int rand(uint8_t *dest, size_t destlen, ngtcp2_rand_ctx ctx) {
   auto dis = std::uniform_int_distribution<uint8_t>(0, 255);
   std::generate(dest, dest + destlen, [&dis]() { return dis(randgen); });
   return 0;
diff --git a/examples/server.cc b/examples/server.cc
index ecc11023..55059079 100644
--- a/examples/server.cc
+++ b/examples/server.cc
@@ -1057,8 +1057,7 @@ int Handler::on_stream_reset(int64_t stream_id) {
 }
 
 namespace {
-int rand(ngtcp2_conn *conn, uint8_t *dest, size_t destlen, ngtcp2_rand_ctx ctx,
-         void *user_data) {
+int rand(uint8_t *dest, size_t destlen, ngtcp2_rand_ctx ctx) {
   auto dis = std::uniform_int_distribution<uint8_t>(0, 255);
   std::generate(dest, dest + destlen, [&dis]() { return dis(randgen); });
   return 0;
diff --git a/lib/includes/ngtcp2/ngtcp2.h b/lib/includes/ngtcp2/ngtcp2.h
index d5e3fde7..abef3855 100644
--- a/lib/includes/ngtcp2/ngtcp2.h
+++ b/lib/includes/ngtcp2/ngtcp2.h
@@ -1525,8 +1525,7 @@ typedef int (*ngtcp2_extend_max_stream_data)(ngtcp2_conn *conn,
  * :enum:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return
  * immediately.
  */
-typedef int (*ngtcp2_rand)(ngtcp2_conn *conn, uint8_t *dest, size_t destlen,
-                           ngtcp2_rand_ctx ctx, void *user_data);
+typedef int (*ngtcp2_rand)(uint8_t *dest, size_t destlen, ngtcp2_rand_ctx ctx);
 
 /**
  * @functypedef
diff --git a/lib/ngtcp2_conn.c b/lib/ngtcp2_conn.c
index 2e532150..12c0b9db 100644
--- a/lib/ngtcp2_conn.c
+++ b/lib/ngtcp2_conn.c
@@ -3609,9 +3609,9 @@ static ngtcp2_ssize conn_write_path_challenge(ngtcp2_conn *conn,
   }
 
   assert(conn->callbacks.rand);
-  rv = conn->callbacks.rand(conn, lfr.path_challenge.data,
+  rv = conn->callbacks.rand(lfr.path_challenge.data,
                             sizeof(lfr.path_challenge.data),
-                            NGTCP2_RAND_CTX_PATH_CHALLENGE, conn->user_data);
+                            NGTCP2_RAND_CTX_PATH_CHALLENGE);
   if (rv != 0) {
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
diff --git a/tests/ngtcp2_conn_test.c b/tests/ngtcp2_conn_test.c
index 2239cfe3..d1b313d1 100644
--- a/tests/ngtcp2_conn_test.c
+++ b/tests/ngtcp2_conn_test.c
@@ -341,11 +341,8 @@ static int recv_retry(ngtcp2_conn *conn, const ngtcp2_pkt_hd *hd,
   return 0;
 }
 
-static int genrand(ngtcp2_conn *conn, uint8_t *dest, size_t destlen,
-                   ngtcp2_rand_ctx ctx, void *user_data) {
-  (void)conn;
+static int genrand(uint8_t *dest, size_t destlen, ngtcp2_rand_ctx ctx) {
   (void)ctx;
-  (void)user_data;
 
   memset(dest, 0, destlen);
 
-- 
GitLab