Lines Matching refs:cookie
50 static int validate_filter(ns_ldap_cookie_t *cookie);
809 __s_api_getEntry(ns_ldap_cookie_t *cookie)
818 if (cookie->resultMsg == NULL) {
821 ret = __s_api_cvtEntry(cookie->conn->ld, cookie->service,
822 cookie->resultMsg, cookie->i_flags,
823 &curEntry, &cookie->errorp);
828 if (cookie->result == NULL) {
829 cookie->result = (ns_ldap_result_t *)
831 if (cookie->result == NULL) {
836 cookie->result->entry = curEntry;
837 cookie->nextEntry = curEntry;
839 cookie->nextEntry->next = curEntry;
840 cookie->nextEntry = curEntry;
842 cookie->result->entries_count++;
998 ns_ldap_cookie_t *cookie;
1001 cookie = (ns_ldap_cookie_t *)calloc(1, sizeof (ns_ldap_cookie_t));
1002 if (cookie == NULL)
1004 cookie->state = INIT;
1007 cookie->connectionId = -1;
1010 cookie->search_timeout.tv_sec = NS_DEFAULT_SEARCH_TIMEOUT;
1012 cookie->search_timeout.tv_sec =
1017 cookie->search_timeout.tv_usec = 0;
1019 return (cookie);
1023 delete_search_cookie(ns_ldap_cookie_t *cookie)
1025 if (cookie == NULL)
1027 if (cookie->connectionId > -1)
1028 DropConnection(cookie->connectionId, cookie->i_flags);
1029 if (cookie->filter)
1030 free(cookie->filter);
1031 if (cookie->i_filter)
1032 free(cookie->i_filter);
1033 if (cookie->service)
1034 free(cookie->service);
1035 if (cookie->sdlist)
1036 (void) __ns_ldap_freeSearchDescriptors(&(cookie->sdlist));
1037 if (cookie->result)
1038 (void) __ns_ldap_freeResult(&cookie->result);
1039 if (cookie->attribute)
1040 __s_api_free2dArray(cookie->attribute);
1041 if (cookie->errorp)
1042 (void) __ns_ldap_freeError(&cookie->errorp);
1043 if (cookie->reflist)
1044 __s_api_deleteRefInfo(cookie->reflist);
1045 if (cookie->basedn)
1046 free(cookie->basedn);
1047 if (cookie->ctrlCookie)
1048 ber_bvfree(cookie->ctrlCookie);
1049 _freeControlList(&cookie->p_serverctrls);
1050 if (cookie->resultctrl)
1051 ldap_controls_free(cookie->resultctrl);
1052 free(cookie);
1056 get_mapped_filter(ns_ldap_cookie_t *cookie, char **new_filter)
1083 if (cookie == NULL || new_filter == NULL)
1087 service = cookie->service;
1088 filter = cookie->filter;
1364 MKERROR(LOG_WARNING, cookie->errorp,
1453 setup_next_search(ns_ldap_cookie_t *cookie)
1462 dptr = *cookie->sdpos;
1463 scope = cookie->i_flags & (NS_LDAP_SCOPE_BASE |
1467 cookie->scope = scope;
1469 cookie->scope = dptr->scope;
1470 switch (cookie->scope) {
1472 cookie->scope = LDAP_SCOPE_BASE;
1475 cookie->scope = LDAP_SCOPE_ONELEVEL;
1478 cookie->scope = LDAP_SCOPE_SUBTREE;
1483 if (cookie->use_filtercb && cookie->init_filter_cb &&
1485 (*cookie->init_filter_cb)(dptr, &filter,
1486 cookie->userdata);
1489 if (cookie->i_filter == NULL) {
1490 cookie->err_rc = NS_LDAP_INVALID_PARAM;
1493 if (cookie->filter)
1494 free(cookie->filter);
1495 cookie->filter = strdup(cookie->i_filter);
1496 if (cookie->filter == NULL) {
1497 cookie->err_rc = NS_LDAP_MEMORY;
1502 if (cookie->filter)
1503 free(cookie->filter);
1504 cookie->filter = strdup(filter);
1506 if (cookie->filter == NULL) {
1507 cookie->err_rc = NS_LDAP_MEMORY;
1517 if (cookie->service) {
1518 rc = get_mapped_filter(cookie, &filter);
1520 cookie->err_rc = rc;
1529 free(cookie->filter);
1530 cookie->filter = filter;
1539 rc = validate_filter(cookie);
1541 cookie->err_rc = rc;
1548 (void ***)¶m, &cookie->errorp);
1550 cookie->err_rc = rc;
1555 if (cookie->basedn)
1556 free(cookie->basedn);
1557 cookie->basedn = (char *)malloc(baselen);
1558 if (cookie->basedn == NULL) {
1559 cookie->err_rc = NS_LDAP_MEMORY;
1562 (void) strcpy(cookie->basedn, dptr->basedn);
1563 (void) strcat(cookie->basedn, str);
1566 if (cookie->basedn)
1567 free(cookie->basedn);
1568 cookie->basedn = strdup(dptr->basedn);
1574 setup_referral_search(ns_ldap_cookie_t *cookie)
1578 ref = cookie->refpos;
1579 cookie->scope = ref->refScope;
1580 if (cookie->filter) {
1581 free(cookie->filter);
1583 cookie->filter = strdup(ref->refFilter);
1584 if (cookie->basedn) {
1585 free(cookie->basedn);
1587 cookie->basedn = strdup(ref->refDN);
1588 if (cookie->filter == NULL || cookie->basedn == NULL) {
1589 cookie->err_rc = NS_LDAP_MEMORY;
1596 get_current_session(ns_ldap_cookie_t *cookie)
1603 rc = __s_api_getConnection(NULL, cookie->i_flags,
1604 cookie->i_auth, &connectionId, &conp,
1605 &cookie->errorp, fail_if_new_pwd_reqd,
1606 cookie->nopasswd_acct_mgmt, cookie->conn_user);
1609 * If password control attached in *cookie->errorp,
1617 &cookie->errorp);
1618 cookie->errorp = NULL;
1623 cookie->err_rc = rc;
1626 cookie->conn = conp;
1627 cookie->connectionId = connectionId;
1633 get_next_session(ns_ldap_cookie_t *cookie)
1640 if (cookie->connectionId > -1) {
1641 DropConnection(cookie->connectionId, cookie->i_flags);
1642 cookie->connectionId = -1;
1646 if (cookie->conn_user != NULL &&
1647 cookie->conn_user->conn_mt != NULL)
1648 __s_api_conn_mt_return(cookie->conn_user);
1650 rc = __s_api_getConnection(NULL, cookie->i_flags,
1651 cookie->i_auth, &connectionId, &conp,
1652 &cookie->errorp, fail_if_new_pwd_reqd,
1653 cookie->nopasswd_acct_mgmt, cookie->conn_user);
1656 * If password control attached in *cookie->errorp,
1664 &cookie->errorp);
1665 cookie->errorp = NULL;
1670 cookie->err_rc = rc;
1673 cookie->conn = conp;
1674 cookie->connectionId = connectionId;
1679 get_referral_session(ns_ldap_cookie_t *cookie)
1686 if (cookie->connectionId > -1) {
1687 DropConnection(cookie->connectionId, cookie->i_flags);
1688 cookie->connectionId = -1;
1692 if (cookie->conn_user != NULL) {
1694 if (cookie->conn_user->conn_mt != NULL)
1695 __s_api_conn_mt_return(cookie->conn_user);
1696 cookie->conn_user->referral = B_TRUE;
1699 rc = __s_api_getConnection(cookie->refpos->refHost, 0,
1700 cookie->i_auth, &connectionId, &conp,
1701 &cookie->errorp, fail_if_new_pwd_reqd,
1702 cookie->nopasswd_acct_mgmt, cookie->conn_user);
1705 * If password control attached in *cookie->errorp,
1713 &cookie->errorp);
1714 cookie->errorp = NULL;
1719 cookie->err_rc = rc;
1722 cookie->conn = conp;
1723 cookie->connectionId = connectionId;
1728 paging_supported(ns_ldap_cookie_t *cookie)
1732 cookie->listType = 0;
1733 rc = __s_api_isCtrlSupported(cookie->conn,
1736 cookie->listType = VLVCTRLFLAG;
1739 rc = __s_api_isCtrlSupported(cookie->conn,
1742 cookie->listType = SIMPLEPAGECTRLFLAG;
1830 setup_vlv_params(ns_ldap_cookie_t *cookie)
1841 _freeControlList(&cookie->p_serverctrls);
1843 if (cookie->sortTypeTry == SSS_UNKNOWN)
1844 cookie->sortTypeTry = get_srvsidesort_type(cookie->service);
1845 if (cookie->sortTypeTry == SSS_UNKNOWN)
1846 cookie->sortTypeTry = SSS_SINGLE_ATTR;
1848 if (cookie->sortTypeTry == SSS_SINGLE_ATTR) {
1849 if ((cookie->i_flags & NS_LDAP_NOMAP) == 0 &&
1850 cookie->i_sortattr) {
1851 sortattr = __ns_ldap_mapAttribute(cookie->service,
1852 cookie->i_sortattr);
1854 } else if (cookie->i_sortattr) {
1855 sortattr = (char *)cookie->i_sortattr;
1867 (void) ldap_get_option(cookie->conn->ld,
1871 rc = ldap_create_sort_control(cookie->conn->ld,
1875 (void) ldap_get_option(cookie->conn->ld,
1880 vlist.ldvlist_index = cookie->index;
1888 rc = ldap_create_virtuallist_control(cookie->conn->ld,
1892 (void) ldap_get_option(cookie->conn->ld, LDAP_OPT_ERROR_NUMBER,
1907 cookie->p_serverctrls = ctrls;
1912 setup_simplepg_params(ns_ldap_cookie_t *cookie)
1918 _freeControlList(&cookie->p_serverctrls);
1920 rc = ldap_create_page_control(cookie->conn->ld, LISTPAGESIZE,
1921 cookie->ctrlCookie, (char)0, &pgctrl);
1923 (void) ldap_get_option(cookie->conn->ld, LDAP_OPT_ERROR_NUMBER,
1934 cookie->p_serverctrls = ctrls;
1939 proc_result_referrals(ns_ldap_cookie_t *cookie)
1948 if (cookie->refpos == NULL) {
1949 cookie->new_state = END_RESULT;
1950 rc = ldap_parse_result(cookie->conn->ld,
1951 cookie->resultMsg,
1956 (void) ldap_get_option(cookie->conn->ld,
1958 &cookie->err_rc);
1959 cookie->new_state = LDAP_ERROR;
1967 &cookie->reflist,
1969 cookie->basedn,
1970 &cookie->scope,
1971 cookie->filter,
1972 cookie->conn->ld);
1974 cookie->new_state =
1985 proc_search_references(ns_ldap_cookie_t *cookie)
1994 if (cookie->refpos == NULL) {
1996 cookie->conn->ld,
1997 cookie->resultMsg);
1999 (void) ldap_get_option(cookie->conn->ld,
2001 &cookie->err_rc);
2002 cookie->new_state = LDAP_ERROR;
2008 &cookie->reflist,
2010 cookie->basedn,
2011 &cookie->scope,
2012 cookie->filter,
2013 cookie->conn->ld);
2015 cookie->new_state =
2027 multi_result(ns_ldap_cookie_t *cookie)
2041 if (cookie->listType == VLVCTRLFLAG) {
2042 rc = ldap_parse_result(cookie->conn->ld, cookie->resultMsg,
2045 (void) ldap_get_option(cookie->conn->ld,
2047 &cookie->err_rc);
2050 cookie->err_rc,
2051 gettext(ldap_err2string(cookie->err_rc)));
2055 cookie->err_rc = NS_LDAP_INTERNAL;
2056 cookie->errorp = *errorp;
2064 &cookie->reflist,
2066 cookie->basedn,
2067 &cookie->scope,
2068 cookie->filter,
2069 cookie->conn->ld);
2086 cookie->conn->ld, retCtrls,
2094 cookie->index =
2096 if (cookie->index > list_size)
2099 if (cookie->entryCount < LISTPAGESIZE)
2102 cookie->index +=
2103 cookie->entryCount;
2111 } else if (cookie->listType == SIMPLEPAGECTRLFLAG) {
2112 rc = ldap_parse_result(cookie->conn->ld, cookie->resultMsg,
2115 (void) ldap_get_option(cookie->conn->ld,
2117 &cookie->err_rc);
2120 cookie->err_rc,
2121 gettext(ldap_err2string(cookie->err_rc)));
2125 cookie->err_rc = NS_LDAP_INTERNAL;
2126 cookie->errorp = *errorp;
2134 &cookie->reflist,
2136 cookie->basedn,
2137 &cookie->scope,
2138 cookie->filter,
2139 cookie->conn->ld);
2155 if (cookie->ctrlCookie)
2156 ber_bvfree(cookie->ctrlCookie);
2157 cookie->ctrlCookie = NULL;
2159 cookie->conn->ld, retCtrls,
2160 &count, &cookie->ctrlCookie);
2162 if ((cookie->ctrlCookie == NULL) ||
2163 (cookie->ctrlCookie->bv_val == NULL) ||
2164 (cookie->ctrlCookie->bv_len == 0))
2173 if (!finished && cookie->listType == VLVCTRLFLAG)
2175 if (!finished && cookie->listType == SIMPLEPAGECTRLFLAG)
2198 clear_results(ns_ldap_cookie_t *cookie)
2201 if (cookie->conn != NULL && cookie->conn->ld != NULL &&
2202 (cookie->connectionId != -1 ||
2203 (cookie->conn_user != NULL &&
2204 cookie->conn_user->conn_mt != NULL)) &&
2205 cookie->msgId != 0) {
2211 rc = ldap_result(cookie->conn->ld, cookie->msgId, LDAP_MSG_ALL,
2212 (struct timeval *)&cookie->search_timeout,
2213 &cookie->resultMsg);
2214 if (rc != -1 && rc != 0 && cookie->resultMsg != NULL) {
2215 (void) ldap_msgfree(cookie->resultMsg);
2216 cookie->resultMsg = NULL;
2224 (void) ldap_abandon_ext(cookie->conn->ld, cookie->msgId,
2226 /* Disassociate cookie with msgId */
2227 cookie->msgId = 0;
2255 search_state_machine(ns_ldap_cookie_t *cookie, ns_state_t state, int cycle)
2267 cookie->state = state;
2271 switch (cookie->state) {
2273 clear_results(cookie);
2274 cookie->new_state = EXIT;
2280 cookie->nopasswd_acct_mgmt = 1;
2281 cookie->new_state = INIT;
2285 if (cookie->attribute) {
2286 __s_api_free2dArray(cookie->attribute);
2287 cookie->attribute = NULL;
2289 if (cookie->reflist) {
2290 __s_api_deleteRefInfo(cookie->reflist);
2291 cookie->reflist = NULL;
2295 cookie->sdpos = NULL;
2296 cookie->new_state = NEXT_SEARCH_DESCRIPTOR;
2297 if (cookie->attribute) {
2298 __s_api_free2dArray(cookie->attribute);
2299 cookie->attribute = NULL;
2301 if ((cookie->i_flags & NS_LDAP_NOMAP) == 0 &&
2302 cookie->i_attr) {
2303 cookie->attribute =
2305 cookie->service,
2306 cookie->i_attr);
2311 cookie->retries++;
2312 if (cookie->retries > NS_LIST_TRY_MAX - 1) {
2313 cookie->new_state = LDAP_ERROR;
2321 if (cookie->conn_user != NULL) {
2324 cmg = cookie->conn_user->conn_mgmt;
2325 retry = cookie->conn_user->retry;
2329 cookie->new_state = LDAP_ERROR;
2337 if (cookie->resultMsg != NULL) {
2338 (void) ldap_msgfree(cookie->resultMsg);
2339 cookie->resultMsg = NULL;
2341 (void) __ns_ldap_freeError(&cookie->errorp);
2342 (void) __ns_ldap_freeResult(&cookie->result);
2343 cookie->sdpos = cookie->sdlist;
2344 cookie->err_from_result = 0;
2345 cookie->err_rc = 0;
2346 cookie->new_state = NEXT_SESSION;
2350 if (cookie->sdpos == NULL) {
2351 cookie->sdpos = cookie->sdlist;
2352 cookie->new_state = GET_SESSION;
2354 cookie->sdpos++;
2355 cookie->new_state = NEXT_SEARCH;
2357 if (*cookie->sdpos == NULL)
2358 cookie->new_state = EXIT;
2361 if (get_current_session(cookie) < 0)
2362 cookie->new_state = NEXT_SESSION;
2364 cookie->new_state = NEXT_SEARCH;
2367 if (get_next_session(cookie) < 0)
2368 cookie->new_state = RESTART_SESSION;
2370 cookie->new_state = NEXT_SEARCH;
2373 if (cookie->i_flags & NS_LDAP_HARD) {
2374 cookie->new_state = NEXT_SESSION;
2383 cookie->err_rc = NS_LDAP_INTERNAL;
2384 cookie->errorp = *errorp;
2385 cookie->new_state = EXIT;
2389 if (cookie->refpos) {
2390 if (setup_referral_search(cookie) < 0) {
2391 cookie->new_state = EXIT;
2394 } else if (setup_next_search(cookie) < 0) {
2395 cookie->new_state = EXIT;
2399 if (paging_supported(cookie)) {
2400 if (cookie->use_paging &&
2401 (cookie->scope != LDAP_SCOPE_BASE)) {
2402 cookie->index = 1;
2403 if (cookie->listType == VLVCTRLFLAG)
2404 cookie->new_state = NEXT_VLV;
2406 cookie->new_state = NEXT_PAGE;
2410 cookie->new_state = ONE_SEARCH;
2413 rc = setup_vlv_params(cookie);
2415 cookie->err_rc = rc;
2416 cookie->new_state = LDAP_ERROR;
2419 cookie->next_state = MULTI_RESULT;
2420 cookie->new_state = DO_SEARCH;
2423 rc = setup_simplepg_params(cookie);
2425 cookie->err_rc = rc;
2426 cookie->new_state = LDAP_ERROR;
2429 cookie->next_state = MULTI_RESULT;
2430 cookie->new_state = DO_SEARCH;
2433 cookie->next_state = NEXT_RESULT;
2434 cookie->new_state = DO_SEARCH;
2437 cookie->entryCount = 0;
2438 rc = ldap_search_ext(cookie->conn->ld,
2439 cookie->basedn,
2440 cookie->scope,
2441 cookie->filter,
2442 cookie->attribute,
2444 cookie->p_serverctrls,
2446 &cookie->search_timeout, 0,
2447 &cookie->msgId);
2455 if (cookie->reinit_on_retriable_err) {
2456 cookie->err_rc = rc;
2457 cookie->new_state = REINIT;
2459 cookie->new_state =
2478 (cookie->conn_user == NULL ||
2479 cookie->conn_user->conn_mt ==
2482 cookie->conn->serverAddr);
2484 cookie->conn_auth_type
2494 cookie->err_rc = rc;
2495 cookie->new_state =
2498 if (cookie->connectionId > -1) {
2507 cookie->
2510 cookie->connectionId =
2515 cookie->conn_user != NULL) {
2516 if (cookie->
2524 * cookie->err_rc above.
2527 cookie->conn_user,
2529 &cookie->errorp);
2538 cookie->err_rc = rc;
2539 cookie->new_state =
2545 cookie->err_rc = rc;
2546 cookie->new_state = LDAP_ERROR;
2549 cookie->new_state = cookie->next_state;
2558 if (cookie->no_wait == B_TRUE)
2561 tv = cookie->search_timeout;
2562 rc = ldap_result(cookie->conn->ld, cookie->msgId,
2565 &cookie->resultMsg);
2567 cookie->new_state = END_RESULT;
2569 if (cookie->followRef)
2571 cookie);
2572 (void) ldap_msgfree(cookie->resultMsg);
2573 cookie->resultMsg = NULL;
2578 if (cookie->followRef)
2579 proc_search_references(cookie);
2580 (void) ldap_msgfree(cookie->resultMsg);
2581 cookie->resultMsg = NULL;
2587 if (cookie->no_wait == B_TRUE) {
2589 cookie->resultMsg);
2590 cookie->resultMsg = NULL;
2591 return (cookie->new_state);
2596 rc = ldap_get_lderrno(cookie->conn->ld,
2600 rc = ldap_result2error(cookie->conn->ld,
2601 cookie->resultMsg, 1);
2606 (cookie->conn_user == NULL ||
2607 cookie->conn_user->conn_mt == NULL)) {
2610 cookie->conn->serverAddr);
2611 if (cookie->connectionId > -1) {
2613 cookie->connectionId,
2615 cookie->connectionId = -1;
2617 cookie->err_from_result = 1;
2619 (void) ldap_msgfree(cookie->resultMsg);
2620 cookie->resultMsg = NULL;
2624 if (cookie->reinit_on_retriable_err) {
2625 cookie->err_rc = rc;
2626 cookie->err_from_result = 1;
2627 cookie->new_state = REINIT;
2629 cookie->new_state =
2635 cookie->reinit_on_retriable_err) {
2637 cookie->err_rc = rc;
2638 cookie->err_from_result = 1;
2639 cookie->new_state = REINIT;
2640 if (cookie->conn_user != NULL)
2642 cookie->conn_user,
2646 &cookie->errorp);
2647 cookie->errorp = errorp;
2651 cookie->err_rc = rc;
2652 cookie->new_state = LDAP_ERROR;
2657 if (cookie->nopasswd_acct_mgmt == 1) {
2658 rc = ldap_get_entry_controls(cookie->conn->ld,
2659 cookie->resultMsg,
2660 &(cookie->resultctrl));
2662 cookie->new_state = LDAP_ERROR;
2663 cookie->err_rc = rc;
2667 rc = __s_api_getEntry(cookie);
2668 (void) ldap_msgfree(cookie->resultMsg);
2669 cookie->resultMsg = NULL;
2671 cookie->new_state = LDAP_ERROR;
2674 cookie->new_state = PROCESS_RESULT;
2675 cookie->next_state = NEXT_RESULT;
2678 if (cookie->no_wait == B_TRUE)
2681 tv = cookie->search_timeout;
2682 rc = ldap_result(cookie->conn->ld, cookie->msgId,
2685 &cookie->resultMsg);
2687 rc = ldap_result2error(cookie->conn->ld,
2688 cookie->resultMsg, 0);
2690 cookie->listType == VLVCTRLFLAG &&
2691 cookie->sortTypeTry == SSS_SINGLE_ATTR) {
2693 cookie->sortTypeTry = SSS_CN_UID_ATTRS;
2694 cookie->new_state = NEXT_VLV;
2695 (void) ldap_msgfree(cookie->resultMsg);
2696 cookie->resultMsg = NULL;
2700 cookie->err_rc = rc;
2701 cookie->new_state = LDAP_ERROR;
2702 (void) ldap_msgfree(cookie->resultMsg);
2703 cookie->resultMsg = NULL;
2706 cookie->new_state = multi_result(cookie);
2707 (void) ldap_msgfree(cookie->resultMsg);
2708 cookie->resultMsg = NULL;
2713 cookie->followRef) {
2714 proc_search_references(cookie);
2715 (void) ldap_msgfree(cookie->resultMsg);
2716 cookie->resultMsg = NULL;
2722 if (cookie->no_wait == B_TRUE) {
2724 cookie->resultMsg);
2725 cookie->resultMsg = NULL;
2726 return (cookie->new_state);
2731 rc = ldap_get_lderrno(cookie->conn->ld,
2735 rc = ldap_result2error(cookie->conn->ld,
2736 cookie->resultMsg, 1);
2741 (cookie->conn_user == NULL ||
2742 cookie->conn_user->conn_mt == NULL)) {
2745 cookie->conn->serverAddr);
2746 if (cookie->connectionId > -1) {
2748 cookie->connectionId,
2750 cookie->connectionId = -1;
2752 cookie->err_from_result = 1;
2754 (void) ldap_msgfree(cookie->resultMsg);
2755 cookie->resultMsg = NULL;
2759 if (cookie->reinit_on_retriable_err) {
2760 cookie->err_rc = rc;
2761 cookie->err_from_result = 1;
2762 cookie->new_state = REINIT;
2764 cookie->new_state =
2771 cookie->reinit_on_retriable_err) {
2773 cookie->err_rc = rc;
2774 cookie->err_from_result = 1;
2775 cookie->new_state = REINIT;
2776 if (cookie->conn_user != NULL)
2778 cookie->conn_user,
2782 &cookie->errorp);
2783 cookie->errorp = errorp;
2787 cookie->err_rc = rc;
2788 cookie->new_state = LDAP_ERROR;
2792 cookie->entryCount++;
2793 rc = __s_api_getEntry(cookie);
2794 (void) ldap_msgfree(cookie->resultMsg);
2795 cookie->resultMsg = NULL;
2797 cookie->new_state = LDAP_ERROR;
2804 if (cookie->listType == VLVCTRLFLAG)
2805 update_srvsidesort_type(cookie->service,
2806 cookie->sortTypeTry);
2808 cookie->new_state = PROCESS_RESULT;
2809 cookie->next_state = MULTI_RESULT;
2813 if (cookie->use_usercb && cookie->callback) {
2815 for (nextEntry = cookie->result->entry;
2818 rc = (*cookie->callback)(nextEntry,
2819 cookie->userdata);
2824 cookie->err_rc = rc;
2829 cookie->err_rc = rc;
2833 (void) __ns_ldap_freeResult(&cookie->result);
2834 cookie->result = NULL;
2837 cookie->new_state = EXIT;
2841 cookie->new_state = cookie->next_state;
2844 cookie->new_state = cookie->next_state;
2850 * cookie->new_state = EXIT;
2856 if (cookie->followRef && cookie->reflist)
2857 cookie->new_state =
2860 cookie->new_state =
2865 if (cookie->refpos == NULL)
2866 cookie->refpos =
2867 cookie->reflist;
2869 cookie->refpos =
2870 cookie->refpos->next;
2872 if (cookie->refpos != NULL)
2873 cookie->new_state =
2876 __s_api_deleteRefInfo(cookie->reflist);
2877 cookie->reflist = NULL;
2878 cookie->new_state =
2880 if (cookie->conn_user != NULL)
2881 cookie->conn_user->referral = B_FALSE;
2885 if (get_referral_session(cookie) < 0)
2886 cookie->new_state = EXIT;
2888 cookie->new_state = NEXT_SEARCH;
2892 rc_save = cookie->err_rc;
2893 if (cookie->err_from_result) {
2894 if (cookie->err_rc == LDAP_SERVER_DOWN) {
2900 cookie->err_rc);
2901 } else if (cookie->err_rc == LDAP_TIMEOUT) {
2906 "."), cookie->err_rc,
2908 cookie->err_rc));
2913 cookie->err_rc,
2914 ldap_err2string(cookie->err_rc));
2916 if (cookie->err_from_result) {
2917 if (cookie->err_rc == LDAP_SERVER_DOWN) {
2919 cookie->err_rc, err, NULL);
2922 cookie->err_rc, err, NULL);
2928 cookie->err_rc = NS_LDAP_INTERNAL;
2929 cookie->errorp = *errorp;
2930 if (cookie->conn_user != NULL) {
2937 __s_api_conn_mt_close(cookie->conn_user,
2938 rc_save, &cookie->errorp);
2947 cookie->state);
2951 cookie->err_rc = NS_LDAP_INTERNAL;
2952 cookie->errorp = *errorp;
2956 if (cookie->conn_user != NULL &&
2957 cookie->conn_user->bad_mt_conn == B_TRUE) {
2958 __s_api_conn_mt_close(cookie->conn_user, 0, NULL);
2959 cookie->err_rc = cookie->conn_user->ns_rc;
2960 cookie->errorp = cookie->conn_user->ns_error;
2961 cookie->conn_user->ns_error = NULL;
2966 return (cookie->new_state);
2968 cookie->state = cookie->new_state;
2976 cookie->err_rc = NS_LDAP_INTERNAL;
2977 cookie->errorp = *errorp;
2988 check_shadow(ns_ldap_cookie_t *cookie, const char *service)
3027 MKERROR(LOG_INFO, cookie->errorp, NS_LDAP_INTERNAL, err,
3031 cookie->i_flags |= NS_LDAP_READ_SHADOW;
3038 if (cookie->i_flags & NS_LDAP_KEEP_CONN)
3040 cookie->i_flags |= NS_LDAP_NEW_CONN;
3066 ns_ldap_cookie_t *cookie;
3086 /* Initialize State machine cookie */
3087 cookie = init_search_state_machine();
3088 if (cookie == NULL) {
3092 cookie->conn_user = conn_user;
3096 &cookie->followRef, errorp);
3098 delete_search_cookie(cookie);
3107 delete_search_cookie(cookie);
3118 delete_search_cookie(cookie);
3119 cookie = NULL;
3127 delete_search_cookie(cookie);
3128 cookie = NULL;
3135 rc = __s_api_getDNs(&dns, service, &cookie->errorp);
3141 *errorp = cookie->errorp;
3142 cookie->errorp = NULL;
3143 delete_search_cookie(cookie);
3144 cookie = NULL;
3154 rc = __s_api_getSearchScope(&scope, &cookie->errorp);
3158 cookie->sdlist = sdlist;
3164 cookie->use_paging = TRUE;
3166 cookie->use_paging = FALSE;
3169 cookie->userdata = userdata;
3171 cookie->init_filter_cb = init_filter_cb;
3172 cookie->use_filtercb = 1;
3175 cookie->callback = callback;
3176 cookie->use_usercb = 1;
3179 /* check_shadow() may add extra value to cookie->i_flags */
3180 cookie->i_flags = flags;
3182 cookie->service = strdup(service);
3183 if (cookie->service == NULL) {
3184 delete_search_cookie(cookie);
3185 cookie = NULL;
3195 rc = check_shadow(cookie, service);
3197 *errorp = cookie->errorp;
3198 cookie->errorp = NULL;
3199 delete_search_cookie(cookie);
3200 cookie = NULL;
3207 cookie->i_filter = strdup(filter);
3208 cookie->i_attr = attribute;
3209 cookie->i_auth = auth;
3210 cookie->i_sortattr = sortattr;
3213 cookie->batch = batch;
3214 cookie->reinit_on_retriable_err = B_TRUE;
3215 cookie->no_wait = B_TRUE;
3216 (void) search_state_machine(cookie, INIT, 0);
3217 cookie->no_wait = B_FALSE;
3218 rc = cookie->err_rc;
3225 * __ns_ldap_list_batch_end(). Add the cookie to our
3228 cookie->caller_result = rResult;
3229 cookie->caller_errorp = errorp;
3230 cookie->caller_rc = rcp;
3231 cookie->next_cookie_in_batch = batch->cookie_list;
3232 batch->cookie_list = cookie;
3238 * and delete the cookie.
3241 (void) search_state_machine(cookie, INIT, 0);
3245 rc = cookie->err_rc;
3251 *errorp = cookie->errorp;
3253 *rResult = cookie->result;
3254 from_result = cookie->err_from_result;
3256 cookie->errorp = NULL;
3257 cookie->result = NULL;
3258 delete_search_cookie(cookie);
3259 cookie = NULL;
3391 * Free the conn_user if the cookie was not batched. If the cookie
3431 * active cookie from the batch and single steps through the
3432 * search_state_machine for the selected cookie. If lookup associated
3433 * with the cookie is complete (success or error) then the cookie is
3458 /* Get the next cookie from the batch */
3465 * Checks the status of the cookie's connection if it needs
3468 * then reinit the search_state_machine for this cookie
3474 * Note that each cookie in the batch will make this
3526 /* Remove the cookie from the batch */
3537 /* Delete cookie and decrement active cookie count */
3551 * another ldap_result() for the cookie in question.
3556 * cookie.
3564 * this cookie till we reach either the error, exit
3602 ns_ldap_cookie_t *cookie;
3612 /* Initialize State machine cookie */
3613 cookie = init_search_state_machine();
3614 if (cookie == NULL) {
3617 cookie->conn_user = conn_user;
3621 &cookie->followRef, errorp);
3623 delete_search_cookie(cookie);
3631 delete_search_cookie(cookie);
3632 cookie = NULL;
3639 delete_search_cookie(cookie);
3640 cookie = NULL;
3654 cookie->sdlist = sdlist;
3655 cookie->i_filter = strdup(dptr->filter);
3656 cookie->i_attr = nis_domain_attrs;
3657 cookie->i_auth = cred;
3658 cookie->i_flags = 0;
3661 rc = search_state_machine(cookie, INIT, 0);
3664 rc = cookie->err_rc;
3670 *errorp = cookie->errorp;
3672 if (cookie->result == NULL)
3675 value = __ns_ldap_getAttr(cookie->result->entry,
3682 if (cookie->result != NULL)
3683 (void) __ns_ldap_freeResult(&cookie->result);
3684 cookie->errorp = NULL;
3685 delete_search_cookie(cookie);
3686 cookie = NULL;
3730 ns_ldap_cookie_t *cookie = NULL;
3793 cookie = init_search_state_machine();
3794 if (cookie == NULL) {
3801 rc = __s_api_getSearchScope(&scope, &cookie->errorp);
3805 /* Initialize State machine cookie */
3806 if (cookie == NULL)
3807 cookie = init_search_state_machine();
3808 if (cookie == NULL) {
3817 cookie->conn_user = conn_user;
3819 cookie->sdlist = sdlist;
3823 &cookie->followRef, errorp);
3825 delete_search_cookie(cookie);
3833 cookie->use_paging = FALSE;
3835 cookie->use_paging = TRUE;
3838 cookie->userdata = userdata;
3840 cookie->init_filter_cb = init_filter_cb;
3841 cookie->use_filtercb = 1;
3843 cookie->use_usercb = 0;
3844 /* check_shadow() may add extra value to cookie->i_flags */
3845 cookie->i_flags = flags;
3847 cookie->service = strdup(service);
3848 if (cookie->service == NULL) {
3849 delete_search_cookie(cookie);
3858 rc = check_shadow(cookie, service);
3860 *errorp = cookie->errorp;
3861 cookie->errorp = NULL;
3862 delete_search_cookie(cookie);
3863 cookie = NULL;
3869 cookie->i_filter = strdup(filter);
3870 cookie->i_attr = attribute;
3871 cookie->i_sortattr = sortattr;
3872 cookie->i_auth = auth;
3876 state = search_state_machine(cookie, state, ONE_STEP);
3879 *result = cookie->result;
3880 cookie->result = NULL;
3881 *vcookie = (void *)cookie;
3884 state = search_state_machine(cookie, state, ONE_STEP);
3885 state = search_state_machine(cookie, CLEAR_RESULTS,
3889 rc = cookie->err_rc;
3894 *errorp = cookie->errorp;
3895 cookie->errorp = NULL;
3897 delete_search_cookie(cookie);
3900 rc = cookie->err_rc;
3902 *errorp = cookie->errorp;
3903 cookie->errorp = NULL;
3908 delete_search_cookie(cookie);
3952 ns_ldap_cookie_t *cookie;
3956 cookie = (ns_ldap_cookie_t *)vcookie;
3957 cookie->result = NULL;
3960 if (cookie->conn_user != NULL) {
3961 rc = __s_api_setup_getnext(cookie->conn_user,
3962 &cookie->err_rc, errorp);
3969 state = search_state_machine(cookie, state, ONE_STEP);
3972 *result = cookie->result;
3973 cookie->result = NULL;
3976 state = search_state_machine(cookie, state, ONE_STEP);
3977 state = search_state_machine(cookie, CLEAR_RESULTS,
3981 rc = cookie->err_rc;
3982 *errorp = cookie->errorp;
3983 cookie->errorp = NULL;
3996 ns_ldap_cookie_t *cookie;
4002 cookie = (ns_ldap_cookie_t *)(*vcookie);
4003 cookie->result = NULL;
4006 rc = search_state_machine(cookie, CLEAR_RESULTS, 0);
4009 rc = cookie->err_rc;
4011 *errorp = cookie->errorp;
4013 cookie->errorp = NULL;
4014 if (cookie->conn_user != NULL) {
4015 if (cookie->conn_user->conn_mt != NULL)
4016 __s_api_conn_mt_return(cookie->conn_user);
4017 __s_api_conn_user_free(cookie->conn_user);
4019 delete_search_cookie(cookie);
4020 cookie = NULL;
5199 validate_filter(ns_ldap_cookie_t *cookie)
5201 char *filter = cookie->filter;
5222 setup_acctmgmt_params(ns_ldap_cookie_t *cookie)
5249 cookie->p_serverctrls = requestctrls;
5655 ns_ldap_cookie_t *cookie;
5665 /* Initialize State machine cookie */
5666 cookie = init_search_state_machine();
5667 if (cookie == NULL)
5669 cookie->conn_user = conn_user;
5673 &cookie->followRef, &error);
5705 rc = __s_api_getDNs(&dns, service, &cookie->errorp);
5711 (void) __ns_ldap_freeError(&(cookie->errorp));
5712 cookie->errorp = NULL;
5731 rc = __s_api_getSearchScope(&scope, &cookie->errorp);
5735 cookie->sdlist = sdlist;
5737 cookie->service = strdup(service);
5738 if (cookie->service == NULL) {
5745 cookie->i_filter = strdup(ldapfilter);
5746 if (cookie->i_filter == NULL) {
5752 if ((rc = setup_acctmgmt_params(cookie)) != NS_LDAP_SUCCESS)
5756 rc = search_state_machine(cookie, GET_ACCT_MGMT_INFO, 0);
5759 rc = cookie->err_rc;
5761 (void) __ns_ldap_freeError(&(cookie->errorp));
5763 if (cookie->result == NULL)
5766 if ((rc = parse_acct_cont_resp_msg(cookie->resultctrl, acctResp))
5773 delete_search_cookie(cookie);
5783 * response control returned from the server is got from the cookie.