Lines Matching refs:sh
53 static inline void sdap_handle_release(struct sdap_handle *sh);
58 struct sdap_handle *sh;
60 sh = talloc_zero(memctx, struct sdap_handle);
61 if (!sh) return NULL;
63 talloc_set_destructor((TALLOC_CTX *)sh, sdap_handle_destructor);
65 return sh;
70 struct sdap_handle *sh = talloc_get_type(mem, struct sdap_handle);
74 if (sh->destructor_lock) {
75 sh->release_memory = true;
79 sdap_handle_release(sh);
83 static void sdap_handle_release(struct sdap_handle *sh)
88 "Trace: sh[%p], connected[%d], ops[%p], ldap[%p], "
90 sh, (int)sh->connected, sh->ops, sh->ldap,
91 (int)sh->destructor_lock, (int)sh->release_memory);
93 if (sh->destructor_lock) return;
94 sh->destructor_lock = true;
97 sh->connected = false;
99 remove_ldap_connection_callbacks(sh);
101 while (sh->ops) {
102 op = sh->ops;
106 if (op == sh->ops) talloc_free(op);
109 if (sh->ldap) {
110 ldap_unbind_ext(sh->ldap, NULL, NULL);
111 sh->ldap = NULL;
115 sh->destructor_lock = false;
117 /* finally if a destructor was ever called, free sh before
119 if (sh->release_memory) {
122 talloc_set_destructor((TALLOC_CTX *)sh, NULL);
123 talloc_free(sh);
129 struct sdap_handle *sh, LDAPMessage *msg);
150 struct sdap_handle *sh = talloc_get_type(pvt, struct sdap_handle);
157 "Trace: sh[%p], connected[%d], ops[%p], ldap[%p]\n",
158 sh, (int)sh->connected, sh->ops, sh->ldap);
160 if (!sh->connected || !sh->ldap) {
162 sdap_handle_release(sh);
166 ret = ldap_result(sh->ldap, LDAP_RES_ANY, 0, &no_timeout, &msg);
175 ldap_get_option(sh->ldap, LDAP_OPT_RESULT_CODE, &ret);
178 sdap_handle_release(sh);
190 te = tevent_add_timer(ev, sh, no_timeout, sdap_ldap_next_result, sh);
197 sdap_process_message(ev, sh, msg);
261 struct sdap_handle *sh, LDAPMessage *msg)
278 for (op = sh->ops; op; op = op->next) {
406 DLIST_REMOVE(op->sh->ops, op);
418 ldap_abandon_ext(op->sh->ldap, op->msgid, NULL, NULL);
439 struct sdap_handle *sh, int msgid,
448 op->sh = sh;
474 DLIST_ADD(sh->ops, op);
485 struct sdap_handle *sh;
498 struct sdap_handle *sh,
517 state->sh = sh;
546 ret = sdap_control_create(state->sh, LDAP_CONTROL_PASSWORDPOLICYREQUEST,
558 ret = ldap_extended_operation(state->sh->ldap, LDAP_EXOP_MODIFY_PASSWD,
570 ret = sdap_op_add(state, ev, state->sh, msgid,
607 ret = ldap_parse_result(state->sh->ldap, reply->msg,
625 ret = ldap_parse_passwordpolicy_control(state->sh->ldap,
709 struct sdap_handle *sh;
723 struct sdap_handle *sh,
739 state->sh = sh;
768 ret = ldap_modify_ext(state->sh->ldap, state->dn, state->mods,
775 ret = sdap_op_add(state, state->ev, state->sh, msgid,
807 lret = ldap_parse_result(state->sh->ldap, reply->msg,
844 struct sdap_handle *sh;
855 struct sdap_handle *sh)
881 state->sh = sh;
884 subreq = sdap_get_generic_send(state, ev, opts, sh,
972 subreq = sdap_get_generic_send(state, state->ev, state->opts, state->sh,
1102 static void sdap_print_server(struct sdap_handle *sh)
1116 ret = get_fd_from_ldap(sh->ldap, &fd);
1150 typedef errno_t (*sdap_parse_cb)(struct sdap_handle *sh,
1157 struct sdap_handle *sh;
1203 struct sdap_handle *sh,
1227 state->sh = sh;
1242 if (state->sh == NULL || state->sh->ldap == NULL) {
1250 sdap_print_server(sh);
1350 && sdap_is_control_supported(state->sh,
1352 lret = ldap_create_page_control(state->sh->ldap,
1353 state->sh->page_size,
1367 lret = ldap_search_ext(state->sh->ldap, state->search_base,
1380 optret = sss_ldap_get_diagnostic_msg(state, state->sh->ldap,
1399 ret = sdap_op_add(state, state->ev, state->sh, msgid,
1477 ret = ldap_parse_reference(state->sh->ldap, reply->msg,
1504 ret = state->parse_cb(state->sh, reply, state->cb_data);
1515 ret = ldap_parse_result(state->sh->ldap, reply->msg,
1583 lret = ldap_parse_pageresponse_control(state->sh->ldap, page_control,
1702 static errno_t sdap_get_and_parse_generic_parse_entry(struct sdap_handle *sh,
1709 struct sdap_handle *sh,
1744 subreq = sdap_get_generic_ext_send(state, ev, opts, sh, search_base,
1758 static errno_t sdap_get_and_parse_generic_parse_entry(struct sdap_handle *sh,
1770 ret = sdap_parse_entry(state, sh, msg,
1828 struct sdap_handle *sh,
1845 subreq = sdap_get_and_parse_generic_send(memctx, ev, opts, sh, search_base,
1892 static int sdap_x_deref_create_control(struct sdap_handle *sh,
1900 static errno_t sdap_x_deref_parse_entry(struct sdap_handle *sh,
1904 struct sdap_handle *sh;
1916 struct sdap_options *opts, struct sdap_handle *sh,
1930 state->sh = sh;
1943 ret = sdap_x_deref_create_control(sh, deref_attr,
1953 subreq = sdap_get_generic_ext_send(state, ev, opts, sh, base_dn,
1969 static int sdap_x_deref_create_control(struct sdap_handle *sh,
1983 ret = ldap_create_deref_control_value(sh->ldap, ds, &derefval);
1990 ret = sdap_control_create(sh, LDAP_CONTROL_X_DEREF,
2001 static errno_t sdap_x_deref_parse_entry(struct sdap_handle *sh,
2019 ret = ldap_get_entry_controls(state->sh->ldap, msg->msg,
2048 ret = ldap_parse_derefresponse_control(state->sh->ldap,
2139 static int sdap_sd_search_create_control(struct sdap_handle *sh,
2143 static errno_t sdap_sd_search_parse_entry(struct sdap_handle *sh,
2150 struct sdap_options *opts, struct sdap_handle *sh,
2171 ret = sdap_sd_search_create_control(sh, sd_flags, &state->ctrls[0]);
2179 subreq = sdap_get_generic_ext_send(state, ev, opts, sh, base_dn,
2197 static int sdap_sd_search_create_control(struct sdap_handle *sh,
2224 ret = sdap_control_create(sh, LDAP_SERVER_SD_OID, 1, sdval, 1, ctrl);
2234 static errno_t sdap_sd_search_parse_entry(struct sdap_handle *sh,
2246 ret = sdap_parse_entry(state, sh, msg,
2335 static int sdap_asq_search_create_control(struct sdap_handle *sh,
2339 static errno_t sdap_asq_search_parse_entry(struct sdap_handle *sh,
2346 struct sdap_options *opts, struct sdap_handle *sh,
2370 ret = sdap_asq_search_create_control(sh, deref_attr, &state->ctrls[0]);
2378 subreq = sdap_get_generic_ext_send(state, ev, opts, sh, base_dn,
2393 static int sdap_asq_search_create_control(struct sdap_handle *sh,
2421 ret = sdap_control_create(sh, LDAP_SERVER_ASQ_OID, 1, asqval, 1, ctrl);
2431 static errno_t sdap_asq_search_parse_entry(struct sdap_handle *sh,
2469 tmp = ldap_get_dn(sh->ldap, msg->msg);
2483 vals = ldap_get_values_len(sh->ldap, msg->msg, "objectClass");
2515 ret = sdap_parse_entry(res[mi], sh, msg,
2577 static errno_t sdap_gc_posix_check_parse(struct sdap_handle *sh,
2584 struct sdap_handle *sh;
2595 struct sdap_options *opts, struct sdap_handle *sh,
2608 state->sh = sh;
2634 state->sh,
2655 static errno_t sdap_gc_posix_check_parse(struct sdap_handle *sh,
2665 dn = ldap_get_dn(sh->ldap, msg->msg);
2674 vals = ldap_get_values_len(sh->ldap, msg->msg,
2677 vals = ldap_get_values_len(sh->ldap, msg->msg,
2756 struct sdap_handle *sh;
2773 struct sdap_handle *sh,
2790 state->sh = sh;
2795 if (sdap_is_control_supported(sh, LDAP_CONTROL_X_DEREF)) {
2799 subreq = sdap_x_deref_search_send(state, ev, opts, sh, search_base,
2837 struct sdap_handle *sh,
2852 state->sh = sh;
2860 if (sdap_is_control_supported(sh, LDAP_SERVER_ASQ_OID)) {
2864 subreq = sdap_asq_search_send(state, ev, opts, sh, base_dn,
2871 } else if (sdap_is_control_supported(sh, LDAP_CONTROL_X_DEREF)) {
2875 subreq = sdap_x_deref_search_send(state, ev, opts, sh, base_dn, NULL,
2924 state->sh->disable_deref = true;
2964 bool sdap_has_deref_support(struct sdap_handle *sh, struct sdap_options *opts)
2973 if (sh->disable_deref) {
2983 if (sdap_is_control_supported(sh, deref_oids[i][0])) {