summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcerpc_sock.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-06-30 17:10:03 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:19:00 -0500
commit8a300c9248cc956d2aaed59e89efc2535a9f60f5 (patch)
tree97d180180386b35f3fbdd788359542fe44002da2 /source4/rpc_server/dcerpc_sock.c
parent7a4496f606ab3d6594489eeee89ed2140b8c7655 (diff)
downloadsamba-8a300c9248cc956d2aaed59e89efc2535a9f60f5.tar.gz
samba-8a300c9248cc956d2aaed59e89efc2535a9f60f5.tar.bz2
samba-8a300c9248cc956d2aaed59e89efc2535a9f60f5.zip
r8021: we only need to return STATUS_BUFFER_OVERFLOW for the ipc_trans replies
and not for the ipc_read() replies as here the client explicit says how much data it wants the write_fn() in dcesrv_output() now returns NTSTATUS and the ipc specific implementations are moved to the ntvfs_ipc module metze (This used to be commit fe483dcd874b7243d61e9623840c672b4ea06b2c)
Diffstat (limited to 'source4/rpc_server/dcerpc_sock.c')
-rw-r--r--source4/rpc_server/dcerpc_sock.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/source4/rpc_server/dcerpc_sock.c b/source4/rpc_server/dcerpc_sock.c
index 317655cfcf..5bba948c08 100644
--- a/source4/rpc_server/dcerpc_sock.c
+++ b/source4/rpc_server/dcerpc_sock.c
@@ -38,18 +38,17 @@ struct dcesrv_socket_context {
/*
write_fn callback for dcesrv_output()
*/
-static ssize_t dcerpc_write_fn(void *private, DATA_BLOB *out)
+static NTSTATUS dcerpc_write_fn(void *private_data, DATA_BLOB *out, size_t *nwritten)
{
NTSTATUS status;
- struct socket_context *sock = private;
+ struct socket_context *sock = talloc_get_type(private_data, struct socket_context);
size_t sendlen;
status = socket_send(sock, out, &sendlen, 0);
- if (NT_STATUS_IS_ERR(status)) {
- return -1;
- }
+ NT_STATUS_IS_ERR_RETURN(status);
- return sendlen;
+ *nwritten = sendlen;
+ return status;
}
static void dcesrv_terminate_connection(struct dcesrv_connection *dce_conn, const char *reason)