From dde07058075d357cfdc63624c8dcaa67ebd40add Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 3 Nov 2004 10:09:48 +0000 Subject: r3507: - added deferred replies on sharing violation in pvfs open. The deferred reply is short-circuited immediately when the file is closed by another user, allowing it to be opened by the waiting user. - added a sane set of timeval manipulation routines - converted all the events code and code that uses it to use struct timeval instead of time_t, which allows for microsecond resolution instead of 1 second resolution. This was needed for doing the pvfs deferred open code, and is why the patch is so big. (This used to be commit 0d51511d408d91eb5f68a35e980e0875299b1831) --- source4/rpc_server/dcerpc_server.c | 13 +++++-------- source4/rpc_server/dcerpc_sock.c | 12 ++---------- 2 files changed, 7 insertions(+), 18 deletions(-) (limited to 'source4/rpc_server') diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c index f9e2d8d28e..3aeb7033d1 100644 --- a/source4/rpc_server/dcerpc_server.c +++ b/source4/rpc_server/dcerpc_server.c @@ -1057,21 +1057,18 @@ static void dcesrv_accept(struct server_connection *srv_conn) dcesrv_sock_accept(srv_conn); } -static void dcesrv_recv(struct server_connection *srv_conn, time_t t, uint16_t flags) +static void dcesrv_recv(struct server_connection *srv_conn, + struct timeval t, uint16_t flags) { dcesrv_sock_recv(srv_conn, t, flags); } -static void dcesrv_send(struct server_connection *srv_conn, time_t t, uint16_t flags) +static void dcesrv_send(struct server_connection *srv_conn, + struct timeval t, uint16_t flags) { dcesrv_sock_send(srv_conn, t, flags); } -static void dcesrv_idle(struct server_connection *srv_conn, time_t t) -{ - dcesrv_sock_idle(srv_conn, t); -} - static void dcesrv_close(struct server_connection *srv_conn, const char *reason) { dcesrv_sock_close(srv_conn, reason); @@ -1190,7 +1187,7 @@ static const struct server_service_ops dcesrv_ops = { .accept_connection = dcesrv_accept, .recv_handler = dcesrv_recv, .send_handler = dcesrv_send, - .idle_handler = dcesrv_idle, + .idle_handler = NULL, .close_connection = dcesrv_close, .service_exit = dcesrv_exit, }; diff --git a/source4/rpc_server/dcerpc_sock.c b/source4/rpc_server/dcerpc_sock.c index 544082471e..f8d0bbfc6d 100644 --- a/source4/rpc_server/dcerpc_sock.c +++ b/source4/rpc_server/dcerpc_sock.c @@ -248,7 +248,7 @@ void dcesrv_sock_accept(struct server_connection *conn) return; } -void dcesrv_sock_recv(struct server_connection *conn, time_t t, uint16_t flags) +void dcesrv_sock_recv(struct server_connection *conn, struct timeval t, uint16_t flags) { NTSTATUS status; struct dcesrv_connection *dce_conn = conn->private_data; @@ -288,7 +288,7 @@ void dcesrv_sock_recv(struct server_connection *conn, time_t t, uint16_t flags) return; } -void dcesrv_sock_send(struct server_connection *conn, time_t t, uint16_t flags) +void dcesrv_sock_send(struct server_connection *conn, struct timeval t, uint16_t flags) { struct dcesrv_connection *dce_conn = conn->private_data; NTSTATUS status; @@ -308,14 +308,6 @@ void dcesrv_sock_send(struct server_connection *conn, time_t t, uint16_t flags) return; } -void dcesrv_sock_idle(struct server_connection *conn, time_t t) -{ - DEBUG(10,("dcesrv_sock_idle\n")); - conn->event.idle->next_event = t + 5; - - return; -} - void dcesrv_sock_close(struct server_connection *conn, const char *reason) { struct dcesrv_connection *dce_conn = conn->private_data; -- cgit