libwbclient: Re-Fix a bug that was fixed with e5741e27c4c
[obnox/samba-ctdb.git] / source / nsswitch / libwbclient / wbclient.c
index 215b61e960a2092b41dc0e2c474a5162237ef92d..0d174d75402e5a2dab5826eaa433be4c428d0d5b 100644 (file)
@@ -29,6 +29,9 @@
 NSS_STATUS winbindd_request_response(int req_type,
                                     struct winbindd_request *request,
                                     struct winbindd_response *response);
+NSS_STATUS winbindd_priv_request_response(int req_type,
+                                         struct winbindd_request *request,
+                                         struct winbindd_response *response);
 
 /** @brief Wrapper around Winbind's send/receive API call
  *
@@ -52,16 +55,20 @@ NSS_STATUS winbindd_request_response(int req_type,
  --Volker
 **********************************************************************/
 
-wbcErr wbcRequestResponse(int cmd,
-                         struct winbindd_request *request,
-                         struct winbindd_response *response)
+static wbcErr wbcRequestResponseInt(
+       int cmd,
+       struct winbindd_request *request,
+       struct winbindd_response *response,
+       NSS_STATUS (*fn)(int req_type,
+                        struct winbindd_request *request,
+                        struct winbindd_response *response))
 {
        wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
        NSS_STATUS nss_status;
 
        /* for some calls the request and/or response cna be NULL */
 
-       nss_status = winbindd_request_response(cmd, request, response);
+       nss_status = fn(cmd, request, response);
 
        switch (nss_status) {
        case NSS_STATUS_SUCCESS:
@@ -81,6 +88,22 @@ wbcErr wbcRequestResponse(int cmd,
        return wbc_status;
 }
 
+wbcErr wbcRequestResponse(int cmd,
+                         struct winbindd_request *request,
+                         struct winbindd_response *response)
+{
+       return wbcRequestResponseInt(cmd, request, response,
+                                    winbindd_request_response);
+}
+
+wbcErr wbcRequestResponsePriv(int cmd,
+                             struct winbindd_request *request,
+                             struct winbindd_response *response)
+{
+       return wbcRequestResponseInt(cmd, request, response,
+                                    winbindd_priv_request_response);
+}
+
 /** @brief Translate an error value into a string
  *
  * @param error