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/smb_server/smb_server.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'source4/smb_server') diff --git a/source4/smb_server/smb_server.c b/source4/smb_server/smb_server.c index e1eb4e3179..861186a8d7 100644 --- a/source4/smb_server/smb_server.c +++ b/source4/smb_server/smb_server.c @@ -723,7 +723,7 @@ static void smbsrv_init(struct server_service *service, const struct model_ops * /* called when a SMB socket becomes readable */ -static void smbsrv_recv(struct server_connection *conn, time_t t, uint16_t flags) +static void smbsrv_recv(struct server_connection *conn, struct timeval t, uint16_t flags) { struct smbsrv_connection *smb_conn = conn->private_data; NTSTATUS status; @@ -744,7 +744,7 @@ static void smbsrv_recv(struct server_connection *conn, time_t t, uint16_t flags /* called when a SMB socket becomes writable */ -static void smbsrv_send(struct server_connection *conn, time_t t, uint16_t flags) +static void smbsrv_send(struct server_connection *conn, struct timeval t, uint16_t flags) { struct smbsrv_connection *smb_conn = conn->private_data; @@ -787,11 +787,10 @@ static void smbsrv_send(struct server_connection *conn, time_t t, uint16_t flags /* called when connection is idle */ -static void smbsrv_idle(struct server_connection *conn, time_t t) +static void smbsrv_idle(struct server_connection *conn, struct timeval t) { DEBUG(10,("smbsrv_idle: not implemented!\n")); - conn->event.idle->next_event = t + 5; - + conn->event.idle->next_event = timeval_add(&t, 5, 0); return; } -- cgit