Skip to content

Commit

Permalink
feat(clean): provide implementations for the clean methods
Browse files Browse the repository at this point in the history
  • Loading branch information
mbroadst committed Jul 8, 2018
1 parent 1b66934 commit 77a77ce
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 5 deletions.
10 changes: 6 additions & 4 deletions src/kerberos.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,11 @@ NAN_METHOD(AuthGSSClientInit) {
}

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

AsyncQueueWorker(new DummyWorker(callback));
AsyncQueueWorker(new ClientCleanWorker(context, callback));
}

NAN_METHOD(AuthGSSClientStep) {
Expand Down Expand Up @@ -104,10 +105,11 @@ NAN_METHOD(AuthGSSServerInit) {
}

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

AsyncQueueWorker(new DummyWorker(callback));
AsyncQueueWorker(new ServerCleanWorker(context, callback));
}

NAN_METHOD(AuthGSSServerStep) {
Expand Down
9 changes: 8 additions & 1 deletion src/kerberos_context.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ KerberosClientContext::KerberosClientContext(gss_client_state* state)

KerberosClientContext::~KerberosClientContext()
{
// TODO: destroy the state with `authenticate_gss_client_clean` if it hasn't been already
}

void KerberosClientContext::destroy() {
authenticate_gss_client_clean(_state);
}

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

void KerberosServerContext::destroy() {
authenticate_gss_server_clean(_state);
}

NAN_GETTER(KerberosServerContext::UserNameGetter) {
KerberosServerContext* context =
Nan::ObjectWrap::Unwrap<KerberosServerContext>(info.Holder());
Expand Down
2 changes: 2 additions & 0 deletions src/kerberos_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ class KerberosClientContext : public Nan::ObjectWrap {
public:
static NAN_MODULE_INIT(Init);
static v8::Local<v8::Object> NewInstance(gss_client_state* state);
void destroy();

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

private:
static Nan::Persistent<v8::Function> constructor;
Expand Down
32 changes: 32 additions & 0 deletions src/kerberos_worker.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,22 @@ class ClientInitWorker : public Nan::AsyncWorker {

};

class ClientCleanWorker : public Nan::AsyncWorker {
public:
ClientCleanWorker(KerberosClientContext* context, Nan::Callback *callback)
: AsyncWorker(callback, "kerberos:ClientCleanWorker"),
_context(context)
{}

virtual void Execute() {
_context->destroy();
}

private:
KerberosClientContext* _context;

};

class ServerInitWorker : public Nan::AsyncWorker {
public:
ServerInitWorker(std::string service, Nan::Callback *callback)
Expand Down Expand Up @@ -84,4 +100,20 @@ class ServerInitWorker : public Nan::AsyncWorker {

};

class ServerCleanWorker : public Nan::AsyncWorker {
public:
ServerCleanWorker(KerberosServerContext* context, Nan::Callback *callback)
: AsyncWorker(callback, "kerberos:ServerCleanWorker"),
_context(context)
{}

virtual void Execute() {
_context->destroy();
}

private:
KerberosServerContext* _context;

};

#endif // KERBEROS_WORKER_H

0 comments on commit 77a77ce

Please # to comment.