[PATCH] better FSRVP error reporting

Jeremy Allison jra at samba.org
Fri Mar 7 17:49:12 MST 2014


On Thu, Mar 06, 2014 at 09:20:34PM +0000, Noel Power wrote:
> Hi,
> These patch(s) output more user friendly error by replacing hard error
> codes with text.

LGTM. Pushed to autobuild. Only (very tiny) nit is we usually
use i++ instead of ++i.

Jeremy.
> >From bfae19ee63a0150f521bf25d68d5cacbef1545f0 Mon Sep 17 00:00:00 2001
> From: Noel Power <noel.power at suse.com>
> Date: Thu, 6 Mar 2014 11:57:45 +0000
> Subject: [PATCH 2/2] For FSRVP use textual error messages instead of hex error
>  codes
> 
> Signed-off-by: Noel Power <noel.power at suse.com>
> Reviewed-by: David Disseldorp <ddiss at samba.org>
> ---
>  source3/rpcclient/cmd_fss.c | 52 +++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 50 insertions(+), 2 deletions(-)
> 
> diff --git a/source3/rpcclient/cmd_fss.c b/source3/rpcclient/cmd_fss.c
> index af194e2..238bd79 100644
> --- a/source3/rpcclient/cmd_fss.c
> +++ b/source3/rpcclient/cmd_fss.c
> @@ -24,6 +24,40 @@
>  #include "../librpc/gen_ndr/ndr_fsrvp.h"
>  #include "../librpc/gen_ndr/ndr_fsrvp_c.h"
>  
> +static const struct {
> +	uint32_t error_code;
> +	const char *error_str;
> +} fss_errors[] = {
> +	{
> +		FSRVP_E_BAD_STATE,
> +		"A method call was invalid because of the state of the server."
> +	},
> +	{
> +		FSRVP_E_SHADOW_COPY_SET_IN_PROGRESS,
> +		"A call was made to either \'SetContext\' or \'StartShadowCopySet\' while the creation of another shadow copy set is in progress."
> +	},
> +	{
> +		FSRVP_E_NOT_SUPPORTED,
> +		"The file store which contains the share to be shadow copied is not supported by the server."
> +	},
> +	{
> +		FSRVP_E_WAIT_TIMEOUT,
> +		"The wait for a shadow copy commit or expose operation has timed out."
> +	},
> +	{
> +		FSRVP_E_WAIT_FAILED,
> +		"The wait for a shadow copy commit expose operation has failed."
> +	},
> +	{
> +		FSRVP_E_OBJECT_NOT_FOUND,
> +		"The specified object does not exist."
> +	},
> +	{
> +		FSRVP_E_UNSUPPORTED_CONTEXT,
> +		"The specified context value is invalid."
> +	}
> +};
> +
>  struct fss_context_map {
>  	uint32_t ctx_val;
>  	const char *ctx_str;
> @@ -55,6 +89,20 @@ struct fss_context_map ctx_map[] = {
>  	{ 0, NULL, NULL },
>  };
>  
> +static const char *get_error_str(uint32_t code)
> +{
> +	static const char *default_err = "Unknown Error";
> +	const char *result = default_err;
> +	int i;
> +	for (i = 0; i < ARRAY_SIZE(fss_errors); ++i) {
> +		if (code == fss_errors[i].error_code) {
> +			result = fss_errors[i].error_str;
> +			break;
> +		}
> +	}
> +	return result;
> +};
> +
>  static bool map_fss_ctx_str(const char *ctx_str,
>  			    uint32_t *ctx_val)
>  {
> @@ -100,8 +148,8 @@ static NTSTATUS cmd_fss_is_path_sup(struct rpc_pipe_client *cli,
>  			  r.in.ShareName));
>  		return NT_STATUS_UNSUCCESSFUL;
>  	} else if (r.out.result) {
> -		DEBUG(0, ("failed IsPathSupported response: 0x%x\n",
> -			  r.out.result));
> +		DEBUG(0, ("failed IsPathSupported response: 0x%x - \"%s\"\n",
> +			  r.out.result, get_error_str(r.out.result)));
>  		return NT_STATUS_UNSUCCESSFUL;
>  	}
>  	printf("UNC %s %s shadow copy requests\n", r.in.ShareName,
> -- 
> 1.8.1.4
> 

> >From af91dd05278f7471bd9b53c918b311de3bad9b2c Mon Sep 17 00:00:00 2001
> From: Noel Power <noel.power at suse.com>
> Date: Thu, 6 Mar 2014 14:02:26 +0000
> Subject: [PATCH 1/2] Add missing FSRVP_E_UNSUPPORTED_CONTEXT constant
> 
> Signed-off-by: Noel Power <noel.power at suse.com>
> Reviewed-by: David Disseldorp <ddiss at samba.org>
> ---
>  librpc/idl/fsrvp.idl | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/librpc/idl/fsrvp.idl b/librpc/idl/fsrvp.idl
> index d61545b..3a11b87 100644
> --- a/librpc/idl/fsrvp.idl
> +++ b/librpc/idl/fsrvp.idl
> @@ -20,6 +20,7 @@ import "misc.idl";
>  	const uint32 FSRVP_E_WAIT_FAILED = 0xFFFFFFFF;
>  	const uint32 FSRVP_E_OBJECT_ALREADY_EXISTS = 0x8004230D;
>  	const uint32 FSRVP_E_OBJECT_NOT_FOUND = 0x80042308;
> +	const uint32 FSRVP_E_UNSUPPORTED_CONTEXT = 0x8004231B;
>  	const uint32 FSRVP_E_BAD_ID = 0x80042302;	/* wire, not documented */
>  
>  	/* TODO move these to generic herror defines or COM in orpc.idl */
> -- 
> 1.8.1.4
> 



More information about the samba-technical mailing list