Changeset 124 for branches/samba-3.0/source/nsswitch/winbindd_async.c
- Timestamp:
- Mar 12, 2008, 9:08:18 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.0/source/nsswitch/winbindd_async.c
r105 r124 783 783 ********************************************************************/ 784 784 785 struct lookupname_state { 786 char *dom_name; 787 char *name; 788 void *caller_private_data; 789 }; 790 785 791 static void lookupname_recv2(TALLOC_CTX *mem_ctx, BOOL success, 786 792 struct winbindd_response *response, … … 791 797 (void (*)(void *, BOOL, const DOM_SID *, enum lsa_SidType))c; 792 798 DOM_SID sid; 799 struct lookupname_state *s = talloc_get_type_abort(private_data, struct lookupname_state); 793 800 794 801 if (!success) { 795 802 DEBUG(5, ("Could not trigger lookup_name\n")); 796 cont( private_data, False, NULL, SID_NAME_UNKNOWN);803 cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN); 797 804 return; 798 805 } … … 800 807 if (response->result != WINBINDD_OK) { 801 808 DEBUG(5, ("lookup_name returned an error\n")); 802 cont( private_data, False, NULL, SID_NAME_UNKNOWN);809 cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN); 803 810 return; 804 811 } … … 807 814 DEBUG(0, ("Could not convert string %s to sid\n", 808 815 response->data.sid.sid)); 809 cont( private_data, False, NULL, SID_NAME_UNKNOWN);810 return; 811 } 812 813 cont( private_data, True, &sid,816 cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN); 817 return; 818 } 819 820 cont(s->caller_private_data, True, &sid, 814 821 (enum lsa_SidType)response->data.sid.type); 815 822 } … … 827 834 (void (*)(void *, BOOL, const DOM_SID *, enum lsa_SidType))c; 828 835 DOM_SID sid; 836 struct lookupname_state *s = talloc_get_type_abort(private_data, struct lookupname_state); 829 837 830 838 if (!success) { 831 839 DEBUG(5, ("lookupname_recv: lookup_name() failed!\n")); 832 cont( private_data, False, NULL, SID_NAME_UNKNOWN);840 cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN); 833 841 return; 834 842 } … … 837 845 /* Try again using the forest root */ 838 846 struct winbindd_domain *root_domain = find_root_domain(); 839 struct winbindd_cli_state *state = (struct winbindd_cli_state*)private_data; 840 struct winbindd_request request; 841 char *name_domain, *name_account; 842 847 struct winbindd_request request; 848 843 849 if ( !root_domain ) { 844 850 DEBUG(5,("lookupname_recv: unable to determine forest root\n")); 845 cont( private_data, False, NULL, SID_NAME_UNKNOWN);851 cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN); 846 852 return; 847 853 } 848 854 849 name_domain = state->request.data.name.dom_name;850 name_account = state->request.data.name.name;851 852 855 ZERO_STRUCT(request); 853 856 request.cmd = WINBINDD_LOOKUPNAME; 854 fstrcpy(request.data.name.dom_name, name_domain);855 fstrcpy(request.data.name.name, name_account);857 fstrcpy(request.data.name.dom_name, s->dom_name); 858 fstrcpy(request.data.name.name, s->name); 856 859 857 860 do_async_domain(mem_ctx, root_domain, &request, lookupname_recv2, 858 (void *)cont, private_data);861 (void *)cont, s); 859 862 860 863 return; … … 864 867 DEBUG(0, ("Could not convert string %s to sid\n", 865 868 response->data.sid.sid)); 866 cont( private_data, False, NULL, SID_NAME_UNKNOWN);867 return; 868 } 869 870 cont( private_data, True, &sid,869 cont(s->caller_private_data, False, NULL, SID_NAME_UNKNOWN); 870 return; 871 } 872 873 cont(s->caller_private_data, True, &sid, 871 874 (enum lsa_SidType)response->data.sid.type); 872 875 } … … 887 890 struct winbindd_request request; 888 891 struct winbindd_domain *domain; 892 struct lookupname_state *s; 889 893 890 894 if ( (domain = find_lookup_domain_from_name(dom_name)) == NULL ) { … … 899 903 fstrcpy(request.data.name.name, name); 900 904 905 if ( (s = TALLOC_ZERO_P(mem_ctx, struct lookupname_state)) == NULL ) { 906 DEBUG(0, ("winbindd_lookupname_async: talloc failed\n")); 907 cont(private_data, False, NULL, SID_NAME_UNKNOWN); 908 return; 909 } 910 911 s->dom_name = talloc_strdup( s, dom_name ); 912 s->name = talloc_strdup( s, name ); 913 if (!s->dom_name || !s->name) { 914 cont(private_data, False, NULL, SID_NAME_UNKNOWN); 915 return; 916 } 917 918 s->caller_private_data = private_data; 919 901 920 do_async_domain(mem_ctx, domain, &request, lookupname_recv, 902 (void *)cont, private_data);921 (void *)cont, s); 903 922 } 904 923
Note:
See TracChangeset
for help on using the changeset viewer.