fixed dynamic devnull class handling
[srvx.git] / src / opserv.c
index 69a21fc9d87dc8cf7b75542e418e5495638b8786..ccede743d5fb9f1ff7b6677cfd83333ee3a48ba4 100644 (file)
@@ -79,7 +79,7 @@
 #define KEY_ISSUER "issuer"
 #define KEY_ISSUED "issued"
 #define KEY_DEVNULL_CLASSES "classes"
-#define KEY_DEVNULL_LASTID "lastid"
+#define KEY_DEVNULL_LASTID "devnull_id"
 #define KEY_DEVNULL_ID "id"
 #define KEY_DEVNULL_NAME "class"
 #define KEY_DEVNULL_MODE "modes"
@@ -4762,6 +4762,17 @@ struct devnull_class devnull_user_get_class(struct handle_info *hi) {
     struct devnull_class th;
     memset(&th, 0, sizeof(th));
     
+    if(devnull_check_priv_func) {
+        struct devnull_class ext_class = ((struct devnull_class (*)(struct handle_info *))devnull_check_priv_func)(hi);
+        th.modes |= ext_class.modes;
+        if(ext_class.name)
+            th.name = ext_class.name;
+        if(DEVNULL_HAS_PRIV(&th, CHANLIMIT))
+            th.maxchan = ext_class.maxchan;
+        if(DEVNULL_HAS_PRIV(&th, MAXSENDQ))
+            th.maxsendq = ext_class.maxsendq;
+    }
+    
     if(hi->devnull_id) {
         struct devnull_class *thp;
         if((thp = devnull_find_id(hi->devnull_id))) {