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