X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=server%2Flogin.c;h=4ec89dd19b2be3768a4c1663d013254a449bff7c;hb=bea3040e0456bc002dfa77fbf49bc37b2ee609f1;hp=ddacdd9f311f07b8452e40032adbde8a43113a64;hpb=a304c5e3c9ef6f145b7e30ebc618e03e749cba95;p=matches%2FMCTX3420.git diff --git a/server/login.c b/server/login.c index ddacdd9..4ec89dd 100644 --- a/server/login.c +++ b/server/login.c @@ -149,8 +149,9 @@ int Login_LDAP_Bind(const char * uri, const char * dn, const char * pass) * @param params - Parameter string, UNUSED */ void Logout_Handler(FCGIContext * context, char * params) -{ +{ FCGI_ReleaseControl(context); + FCGI_AcceptJSON(context, "Logged out", "0"); } @@ -161,13 +162,6 @@ void Logout_Handler(FCGIContext * context, char * params) */ void Login_Handler(FCGIContext * context, char * params) { - - if (context->control_key[0] != '\0') - { - FCGI_RejectJSON(context, "Someone is already logged in."); - return; - } - char * user; // The username supplied through CGI char * pass; // The password supplied through CGI @@ -251,8 +245,14 @@ void Login_Handler(FCGIContext * context, char * params) } else { - FCGI_LockControl(context, false); - // Give the user a cookie - FCGI_AcceptJSON(context, "Logged in", context->control_key); + if (FCGI_LockControl(context, false)) + { + // Give the user a cookie + FCGI_AcceptJSON(context, "Logged in", context->control_key); + } + else + { + FCGI_RejectJSON(context, "Someone else is already logged in"); + } } }