src/server/daemon/acldata.c

changeset 61
c858850f3d3a
parent 51
b28cf69f42e8
child 88
73b3485e96f1
equal deleted inserted replaced
60:feb2f1e115c6 61:c858850f3d3a
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE. 26 * POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #include "../config/acl.h" 29 #include "../config/acl.h"
30 #include "../util/atomic.h"
30 #include "config.h" 31 #include "config.h"
31 32
32 #include "acldata.h" 33 #include "acldata.h"
33 34
34 ACLData* acl_data_new() { 35 ACLData* acl_data_new() {
38 dat->namedACLs = ucx_map_new(16); 39 dat->namedACLs = ucx_map_new(16);
39 40
40 return dat; 41 return dat;
41 } 42 }
42 43
44 void acl_data_ref(ACLData *acldata) {
45 if(acldata) {
46 ws_atomic_inc32(&acldata->ref);
47 }
48 }
49
50 void acl_data_unref(ACLData *acldata) {
51 uint32_t ref = ws_atomic_dec32(&acldata->ref);
52 if(ref == 0) {
53 UcxMapIterator i = ucx_map_iterator(acldata->namedACLs);
54 WSAcl *acl;
55 UCX_MAP_FOREACH(acl, i) {
56 free(acl->ace);
57 free(acl->ece);
58 if(acl->acl.authprompt) {
59 free(acl->acl.authprompt);
60 }
61 free(acl);
62 }
63 ucx_map_free(acldata->namedACLs);
64 free(acldata);
65 }
66 }
67
43 ACLList* acl_get(ACLData *acldata, char *name) { 68 ACLList* acl_get(ACLData *acldata, char *name) {
44 ACLList *acl = ucx_map_cstr_get(acldata->namedACLs, name); 69 ACLList *acl = ucx_map_cstr_get(acldata->namedACLs, name);
45 return acl; 70 return acl;
46 } 71 }

mercurial