Skip to content

Commit 77a77ce

Browse files
committedJul 8, 2018
feat(clean): provide implementations for the clean methods
1 parent 1b66934 commit 77a77ce

File tree

4 files changed

+48
-5
lines changed

4 files changed

+48
-5
lines changed
 

‎src/kerberos.cc

+6-4
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,11 @@ NAN_METHOD(AuthGSSClientInit) {
6666
}
6767

6868
NAN_METHOD(AuthGSSClientClean) {
69-
v8::MaybeLocal<v8::Object> context = Nan::To<v8::Object>(info[0]);
69+
KerberosClientContext* context =
70+
Nan::ObjectWrap::Unwrap<KerberosClientContext>(info[0]->ToObject());
7071
Nan::Callback *callback = new Nan::Callback(Nan::To<v8::Function>(info[1]).ToLocalChecked());
7172

72-
AsyncQueueWorker(new DummyWorker(callback));
73+
AsyncQueueWorker(new ClientCleanWorker(context, callback));
7374
}
7475

7576
NAN_METHOD(AuthGSSClientStep) {
@@ -104,10 +105,11 @@ NAN_METHOD(AuthGSSServerInit) {
104105
}
105106

106107
NAN_METHOD(AuthGSSServerClean) {
107-
v8::MaybeLocal<v8::Object> context = Nan::To<v8::Object>(info[0]);
108+
KerberosServerContext* context =
109+
Nan::ObjectWrap::Unwrap<KerberosServerContext>(info[0]->ToObject());
108110
Nan::Callback *callback = new Nan::Callback(Nan::To<v8::Function>(info[1]).ToLocalChecked());
109111

110-
AsyncQueueWorker(new DummyWorker(callback));
112+
AsyncQueueWorker(new ServerCleanWorker(context, callback));
111113
}
112114

113115
NAN_METHOD(AuthGSSServerStep) {

‎src/kerberos_context.cc

+8-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ KerberosClientContext::KerberosClientContext(gss_client_state* state)
3131

3232
KerberosClientContext::~KerberosClientContext()
3333
{
34-
// TODO: destroy the state with `authenticate_gss_client_clean` if it hasn't been already
34+
}
35+
36+
void KerberosClientContext::destroy() {
37+
authenticate_gss_client_clean(_state);
3538
}
3639

3740
NAN_GETTER(KerberosClientContext::UserNameGetter) {
@@ -93,6 +96,10 @@ KerberosServerContext::~KerberosServerContext()
9396
// TODO: destroy the state with `authenticate_gss_server_clean` if it hasn't been already
9497
}
9598

99+
void KerberosServerContext::destroy() {
100+
authenticate_gss_server_clean(_state);
101+
}
102+
96103
NAN_GETTER(KerberosServerContext::UserNameGetter) {
97104
KerberosServerContext* context =
98105
Nan::ObjectWrap::Unwrap<KerberosServerContext>(info.Holder());

‎src/kerberos_context.h

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class KerberosClientContext : public Nan::ObjectWrap {
88
public:
99
static NAN_MODULE_INIT(Init);
1010
static v8::Local<v8::Object> NewInstance(gss_client_state* state);
11+
void destroy();
1112

1213
private:
1314
static Nan::Persistent<v8::Function> constructor;
@@ -27,6 +28,7 @@ class KerberosServerContext : public Nan::ObjectWrap {
2728
public:
2829
static NAN_MODULE_INIT(Init);
2930
static v8::Local<v8::Object> NewInstance(gss_server_state* state);
31+
void destroy();
3032

3133
private:
3234
static Nan::Persistent<v8::Function> constructor;

‎src/kerberos_worker.h

+32
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,22 @@ class ClientInitWorker : public Nan::AsyncWorker {
4949

5050
};
5151

52+
class ClientCleanWorker : public Nan::AsyncWorker {
53+
public:
54+
ClientCleanWorker(KerberosClientContext* context, Nan::Callback *callback)
55+
: AsyncWorker(callback, "kerberos:ClientCleanWorker"),
56+
_context(context)
57+
{}
58+
59+
virtual void Execute() {
60+
_context->destroy();
61+
}
62+
63+
private:
64+
KerberosClientContext* _context;
65+
66+
};
67+
5268
class ServerInitWorker : public Nan::AsyncWorker {
5369
public:
5470
ServerInitWorker(std::string service, Nan::Callback *callback)
@@ -84,4 +100,20 @@ class ServerInitWorker : public Nan::AsyncWorker {
84100

85101
};
86102

103+
class ServerCleanWorker : public Nan::AsyncWorker {
104+
public:
105+
ServerCleanWorker(KerberosServerContext* context, Nan::Callback *callback)
106+
: AsyncWorker(callback, "kerberos:ServerCleanWorker"),
107+
_context(context)
108+
{}
109+
110+
virtual void Execute() {
111+
_context->destroy();
112+
}
113+
114+
private:
115+
KerberosServerContext* _context;
116+
117+
};
118+
87119
#endif // KERBEROS_WORKER_H

0 commit comments

Comments
 (0)
Please sign in to comment.