]> jfr.im git - solanum.git/blobdiff - authd/provider.c
wsockd: implement reading of small and large frames (but not huge frames)
[solanum.git] / authd / provider.c
index 6cc6eee4ebd5bca9de9d263944dd694f1c1a2b42..8288f295f4fafa61d39d5fe137cf034f4dc68be6 100644 (file)
@@ -86,7 +86,7 @@ load_provider(struct auth_provider *provider)
        if(provider->init != NULL)
                provider->init();
 
-       rb_dlinkAdd(provider, &provider->node, &auth_providers);
+       rb_dlinkAddTail(provider, &provider->node, &auth_providers);
 }
 
 void
@@ -215,6 +215,9 @@ reject_client(struct auth_client *auth, provider_t id, const char *data, const c
        case PROVIDER_BLACKLIST:
                reject = 'B';
                break;
+       case PROVIDER_OPM:
+               reject = 'O';
+               break;
        default:
                reject = 'N';
                break;
@@ -339,8 +342,9 @@ handle_cancel_connection(int parc, char *parv[])
 
        if((auth = rb_dictionary_retrieve(auth_clients, RB_UINT_TO_POINTER((uint32_t)lcid))) == NULL)
        {
-               warn_opers(L_CRIT, "provider: tried to cancel nonexistent connection %lx", lcid);
-               exit(EX_PROVIDER_ERROR);
+               /* This could happen as a race if we've accepted/rejected but they cancel, so don't die here.
+                * --Elizafox */
+               return;
        }
 
        cancel_providers(auth);