50 |
50 |
51 init(service_name); |
51 init(service_name); |
52 |
52 |
53 sasl_i.realm = realm; |
53 sasl_i.realm = realm; |
54 sasl_i.service_name = service_name; |
54 sasl_i.service_name = service_name; |
55 sasl_i.cyrus = cyrussasl.server_new(service_name, nil, realm, nil, nil) |
55 |
|
56 local st, ret = pcall(cyrussasl.server_new, service_name, nil, realm, nil, nil) |
|
57 if st then |
|
58 sasl_i.cyrus = ret; |
|
59 else |
|
60 log("error", "server_new failed: %s", ret); |
|
61 return nil; |
|
62 end |
56 |
63 |
57 if cyrussasl.set_canon_cb then |
64 if cyrussasl.set_canon_cb then |
58 local c14n_cb = function (user) |
65 local c14n_cb = function (user) |
59 local node = s_match(user, "^([^@]+)"); |
66 local node = s_match(user, "^([^@]+)"); |
60 log("debug", "Canonicalizing username %s to %s", user, node) |
67 log("debug", "Canonicalizing username %s to %s", user, node) |
61 return node |
68 return node |
62 end |
69 end |
63 cyrussasl.set_canon_cb(sasl_i.cyrus, c14n_cb); |
70 cyrussasl.set_canon_cb(sasl_i.cyrus, c14n_cb); |
64 end |
71 end |
65 |
72 |
66 if sasl_i.cyrus == 0 then |
|
67 log("error", "got NULL return value from server_new") |
|
68 return nil; |
|
69 end |
|
70 cyrussasl.setssf(sasl_i.cyrus, 0, 0xffffffff) |
73 cyrussasl.setssf(sasl_i.cyrus, 0, 0xffffffff) |
71 local s = setmetatable(sasl_i, method); |
74 local s = setmetatable(sasl_i, method); |
72 return s; |
75 return s; |
73 end |
76 end |
74 |
77 |