1
0
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:
Jeremy Allison 2007-11-11 13:18:22 -08:00
commit a084eae039
2 changed files with 79 additions and 12 deletions

View File

@ -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;
}

View File

@ -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
*/