Small updates to improve unique_ptr usage.

PiperOrigin-RevId: 372316106
Change-Id: Ic027f312d32d7a596e66b9034520998eaf18e92f
diff --git a/http2/adapter/nghttp2_callbacks.cc b/http2/adapter/nghttp2_callbacks.cc
index 2568179..8774873 100644
--- a/http2/adapter/nghttp2_callbacks.cc
+++ b/http2/adapter/nghttp2_callbacks.cc
@@ -186,7 +186,7 @@
   return bytes_to_send;
 }
 
-nghttp2_session_callbacks* Create() {
+nghttp2_session_callbacks_unique_ptr Create() {
   nghttp2_session_callbacks* callbacks;
   nghttp2_session_callbacks_new(&callbacks);
 
@@ -201,7 +201,7 @@
                                                             &OnDataChunk);
   nghttp2_session_callbacks_set_on_stream_close_callback(callbacks,
                                                          &OnStreamClosed);
-  return callbacks;
+  return MakeCallbacksPtr(callbacks);
 }
 
 }  // namespace callbacks
diff --git a/http2/adapter/nghttp2_callbacks.h b/http2/adapter/nghttp2_callbacks.h
index ba10e13..5fbaee0 100644
--- a/http2/adapter/nghttp2_callbacks.h
+++ b/http2/adapter/nghttp2_callbacks.h
@@ -2,6 +2,7 @@
 #define QUICHE_HTTP2_ADAPTER_NGHTTP2_CALLBACKS_H_
 
 #include "http2/adapter/http2_protocol.h"
+#include "http2/adapter/nghttp2_util.h"
 #include "third_party/nghttp2/src/lib/includes/nghttp2/nghttp2.h"
 
 namespace http2 {
@@ -47,7 +48,7 @@
                                    nghttp2_data_source* source,
                                    void* user_data);
 
-nghttp2_session_callbacks* Create();
+nghttp2_session_callbacks_unique_ptr Create();
 
 }  // namespace callbacks
 }  // namespace adapter
diff --git a/http2/adapter/nghttp2_session.cc b/http2/adapter/nghttp2_session.cc
index 6d997a9..dec4c03 100644
--- a/http2/adapter/nghttp2_session.cc
+++ b/http2/adapter/nghttp2_session.cc
@@ -13,7 +13,7 @@
 }  // namespace
 
 NgHttp2Session::NgHttp2Session(Perspective perspective,
-                               nghttp2_session_callbacks* callbacks,
+                               nghttp2_session_callbacks_unique_ptr callbacks,
                                nghttp2_option* options,
                                void* userdata)
     : session_(MakeSessionPtr(nullptr)),
@@ -22,15 +22,14 @@
   nghttp2_session* session;
   switch (perspective) {
     case Perspective::kClient:
-      nghttp2_session_client_new2(&session, callbacks, userdata,
+      nghttp2_session_client_new2(&session, callbacks.get(), userdata,
                                   options_.get());
       break;
     case Perspective::kServer:
-      nghttp2_session_server_new2(&session, callbacks, userdata,
+      nghttp2_session_server_new2(&session, callbacks.get(), userdata,
                                   options_.get());
       break;
   }
-  nghttp2_session_callbacks_del(callbacks);
   session_.reset(session);
 }
 
diff --git a/http2/adapter/nghttp2_session.h b/http2/adapter/nghttp2_session.h
index bf1e01b..5dc1ddf 100644
--- a/http2/adapter/nghttp2_session.h
+++ b/http2/adapter/nghttp2_session.h
@@ -12,7 +12,7 @@
 class NgHttp2Session : public Http2Session {
  public:
   NgHttp2Session(Perspective perspective,
-                 nghttp2_session_callbacks* callbacks,
+                 nghttp2_session_callbacks_unique_ptr callbacks,
                  nghttp2_option* options,
                  void* userdata);
   ~NgHttp2Session() override;
diff --git a/http2/adapter/nghttp2_session_test.cc b/http2/adapter/nghttp2_session_test.cc
index 62a255e..9491412 100644
--- a/http2/adapter/nghttp2_session_test.cc
+++ b/http2/adapter/nghttp2_session_test.cc
@@ -56,9 +56,10 @@
     return options;
   }
 
-  nghttp2_session_callbacks* CreateCallbacks() {
-    nghttp2_session_callbacks* callbacks = callbacks::Create();
-    nghttp2_session_callbacks_set_send_callback(callbacks, &SaveSessionOutput);
+  nghttp2_session_callbacks_unique_ptr CreateCallbacks() {
+    nghttp2_session_callbacks_unique_ptr callbacks = callbacks::Create();
+    nghttp2_session_callbacks_set_send_callback(callbacks.get(),
+                                                &SaveSessionOutput);
     return callbacks;
   }
 
diff --git a/http2/adapter/nghttp2_util.cc b/http2/adapter/nghttp2_util.cc
index f457bb6..6dd218e 100644
--- a/http2/adapter/nghttp2_util.cc
+++ b/http2/adapter/nghttp2_util.cc
@@ -13,11 +13,15 @@
 namespace {
 
 void DeleteCallbacks(nghttp2_session_callbacks* callbacks) {
-  nghttp2_session_callbacks_del(callbacks);
+  if (callbacks) {
+    nghttp2_session_callbacks_del(callbacks);
+  }
 }
 
 void DeleteSession(nghttp2_session* session) {
-  nghttp2_session_del(session);
+  if (session) {
+    nghttp2_session_del(session);
+  }
 }
 
 }  // namespace