mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
Merge branch 'v3-2-test' of ssh://jra@git.samba.org/data/git/samba into v3-2-test
(This used to be commit b9d79fb509
)
This commit is contained in:
commit
a084eae039
@ -243,7 +243,7 @@ static struct messaging_rec *ctdb_pull_messaging_rec(TALLOC_CTX *mem_ctx,
|
||||
{
|
||||
struct messaging_rec *result;
|
||||
DATA_BLOB blob;
|
||||
NTSTATUS status;
|
||||
enum ndr_err_code ndr_err;
|
||||
|
||||
if ((overall_length < offsetof(struct ctdb_req_message, data))
|
||||
|| (overall_length
|
||||
@ -259,22 +259,22 @@ static struct messaging_rec *ctdb_pull_messaging_rec(TALLOC_CTX *mem_ctx,
|
||||
|
||||
blob = data_blob_const(msg->data, msg->datalen);
|
||||
|
||||
status = ndr_pull_struct_blob(
|
||||
ndr_err = ndr_pull_struct_blob(
|
||||
&blob, result, result,
|
||||
(ndr_pull_flags_fn_t)ndr_pull_messaging_rec);
|
||||
|
||||
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
|
||||
DEBUG(0, ("ndr_pull_struct_blob failed: %s\n",
|
||||
ndr_errstr(ndr_err)));
|
||||
TALLOC_FREE(result);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (DEBUGLEVEL >= 10) {
|
||||
DEBUG(10, ("ctdb_pull_messaging_rec:\n"));
|
||||
NDR_PRINT_DEBUG(messaging_rec, result);
|
||||
}
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0, ("ndr_pull_struct_blob failed: %s\n",
|
||||
nt_errstr(status)));
|
||||
TALLOC_FREE(result);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -620,19 +620,20 @@ NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
|
||||
TALLOC_CTX *mem_ctx;
|
||||
DATA_BLOB blob;
|
||||
NTSTATUS status;
|
||||
enum ndr_err_code ndr_err;
|
||||
|
||||
if (!(mem_ctx = talloc_init("ctdbd_messaging_send"))) {
|
||||
DEBUG(0, ("talloc failed\n"));
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
status = ndr_push_struct_blob(
|
||||
ndr_err = ndr_push_struct_blob(
|
||||
&blob, mem_ctx, msg,
|
||||
(ndr_push_flags_fn_t)ndr_push_messaging_rec);
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
|
||||
DEBUG(0, ("ndr_push_struct_blob failed: %s\n",
|
||||
nt_errstr(status)));
|
||||
ndr_errstr(ndr_err)));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -375,6 +375,72 @@ NTSTATUS ndr_map_error2ntstatus(enum ndr_err_code ndr_err)
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert an ndr error to string
|
||||
*/
|
||||
|
||||
const char *ndr_errstr(enum ndr_err_code err)
|
||||
{
|
||||
switch (err) {
|
||||
case NDR_ERR_SUCCESS:
|
||||
return "NDR_ERR_SUCCESS";
|
||||
break;
|
||||
case NDR_ERR_ARRAY_SIZE:
|
||||
return "NDR_ERR_ARRAY_SIZE";
|
||||
break;
|
||||
case NDR_ERR_BAD_SWITCH:
|
||||
return "NDR_ERR_BAD_SWITCH";
|
||||
break;
|
||||
case NDR_ERR_OFFSET:
|
||||
return "NDR_ERR_OFFSET";
|
||||
break;
|
||||
case NDR_ERR_RELATIVE:
|
||||
return "NDR_ERR_RELATIVE";
|
||||
break;
|
||||
case NDR_ERR_CHARCNV:
|
||||
return "NDR_ERR_CHARCNV";
|
||||
break;
|
||||
case NDR_ERR_LENGTH:
|
||||
return "NDR_ERR_LENGTH";
|
||||
break;
|
||||
case NDR_ERR_SUBCONTEXT:
|
||||
return "NDR_ERR_SUBCONTEXT";
|
||||
break;
|
||||
case NDR_ERR_COMPRESSION:
|
||||
return "NDR_ERR_COMPRESSION";
|
||||
break;
|
||||
case NDR_ERR_STRING:
|
||||
return "NDR_ERR_STRING";
|
||||
break;
|
||||
case NDR_ERR_VALIDATE:
|
||||
return "NDR_ERR_VALIDATE";
|
||||
break;
|
||||
case NDR_ERR_BUFSIZE:
|
||||
return "NDR_ERR_BUFSIZE";
|
||||
break;
|
||||
case NDR_ERR_ALLOC:
|
||||
return "NDR_ERR_ALLOC";
|
||||
break;
|
||||
case NDR_ERR_RANGE:
|
||||
return "NDR_ERR_RANGE";
|
||||
break;
|
||||
case NDR_ERR_TOKEN:
|
||||
return "NDR_ERR_TOKEN";
|
||||
break;
|
||||
case NDR_ERR_IPV4ADDRESS:
|
||||
return "NDR_ERR_IPV4ADDRESS";
|
||||
break;
|
||||
case NDR_ERR_INVALID_POINTER:
|
||||
return "NDR_ERR_INVALID_POINTER";
|
||||
break;
|
||||
case NDR_ERR_UNREAD_BYTES:
|
||||
return "NDR_ERR_UNREAD_BYTES";
|
||||
break;
|
||||
}
|
||||
|
||||
return talloc_asprintf(talloc_tos(), "Unknown NDR error: %d", err);
|
||||
}
|
||||
|
||||
/*
|
||||
return and possibly log an NDR error
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user