Rebase against aa1580398e4c9eda851d475213e07d865d9238bd.

This commit is contained in:
Sebastian Lackner
2017-04-13 11:52:28 +02:00
parent 830a8b9975
commit 14acf51a2d
12 changed files with 349 additions and 518 deletions

View File

@@ -1,4 +1,4 @@
From aaeefae082df9cd44092a36d5781de6d6a0fabee Mon Sep 17 00:00:00 2001
From 63c4e77ca26c57eb4f1c0786f4b62f3b01106d96 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 17 Aug 2015 01:11:47 +0200
Subject: server: Store a reference to the parent object for pipe servers. (v2)
@@ -30,19 +30,19 @@ index 43c5ee46d7..9a1ba670ab 100644
"name too short %s\n", wine_dbgstr_w(str->Buffer) );
trace( "got %s len %u\n", wine_dbgstr_w(str->Buffer), len );
diff --git a/server/named_pipe.c b/server/named_pipe.c
index 0d10f11669..2713614776 100644
index 4196edfd4b..0726c75f40 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -164,6 +164,8 @@ static void pipe_end_reselect_async( struct fd *fd, struct async_queue *queue );
@@ -162,6 +162,8 @@ static void pipe_end_reselect_async( struct fd *fd, struct async_queue *queue );
/* server end functions */
static void pipe_server_dump( struct object *obj, int verbose );
static struct fd *pipe_server_get_fd( struct object *obj );
+static int pipe_server_link_name( struct object *obj, struct object_name *name, struct object *parent );
+static void pipe_server_unlink_name( struct object *obj, struct object_name *name );
static void pipe_server_destroy( struct object *obj);
static obj_handle_t pipe_server_flush( struct fd *fd, struct async *async, int blocking );
static obj_handle_t pipe_server_flush( struct fd *fd, struct async *async );
static enum server_fd_type pipe_server_get_fd_type( struct fd *fd );
@@ -185,8 +187,8 @@ static const struct object_ops pipe_server_ops =
@@ -182,8 +184,8 @@ static const struct object_ops pipe_server_ops =
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
@@ -53,16 +53,16 @@ index 0d10f11669..2713614776 100644
no_open_file, /* open_file */
no_alloc_handle, /* alloc_handle */
fd_close_handle, /* close_handle */
@@ -210,6 +212,8 @@ static const struct fd_ops pipe_server_fd_ops =
@@ -207,6 +209,8 @@ static const struct fd_ops pipe_server_fd_ops =
static void pipe_client_dump( struct object *obj, int verbose );
static int pipe_client_signaled( struct object *obj, struct wait_queue_entry *entry );
static struct fd *pipe_client_get_fd( struct object *obj );
+static int pipe_client_link_name( struct object *obj, struct object_name *name, struct object *parent );
+static void pipe_client_unlink_name( struct object *obj, struct object_name *name );
static void pipe_client_destroy( struct object *obj );
static obj_handle_t pipe_client_flush( struct fd *fd, struct async *async, int blocking );
static obj_handle_t pipe_client_ioctl( struct fd *fd, ioctl_code_t code, struct async *async,
@@ -231,8 +235,8 @@ static const struct object_ops pipe_client_ops =
static obj_handle_t pipe_client_flush( struct fd *fd, struct async *async );
static obj_handle_t pipe_client_ioctl( struct fd *fd, ioctl_code_t code, struct async *async );
@@ -227,8 +231,8 @@ static const struct object_ops pipe_client_ops =
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
@@ -73,7 +73,7 @@ index 0d10f11669..2713614776 100644
no_open_file, /* open_file */
no_alloc_handle, /* alloc_handle */
fd_close_handle, /* close_handle */
@@ -484,6 +488,17 @@ static void pipe_end_destroy( struct pipe_end *pipe_end )
@@ -480,6 +484,17 @@ static void pipe_end_destroy( struct pipe_end *pipe_end )
free_async_queue( pipe_end->write_q );
}
@@ -91,7 +91,7 @@ index 0d10f11669..2713614776 100644
static void pipe_server_destroy( struct object *obj)
{
struct pipe_server *server = (struct pipe_server *)obj;
@@ -513,6 +528,17 @@ static void pipe_server_destroy( struct object *obj)
@@ -509,6 +524,17 @@ static void pipe_server_destroy( struct object *obj)
release_object( server->pipe );
}
@@ -109,7 +109,7 @@ index 0d10f11669..2713614776 100644
static void pipe_client_destroy( struct object *obj)
{
struct pipe_client *client = (struct pipe_client *)obj;
@@ -1072,9 +1098,10 @@ static void init_pipe_end( struct pipe_end *pipe_end, unsigned int pipe_flags, d
@@ -1080,9 +1106,10 @@ static void init_pipe_end( struct pipe_end *pipe_end, unsigned int pipe_flags, d
static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned int options,
unsigned int pipe_flags )
{
@@ -121,7 +121,7 @@ index 0d10f11669..2713614776 100644
if (!server)
return NULL;
@@ -1096,11 +1123,13 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned
@@ -1104,11 +1131,13 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned
return server;
}
@@ -137,7 +137,7 @@ index 0d10f11669..2713614776 100644
if (!client)
return NULL;
@@ -1170,7 +1199,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
@@ -1178,7 +1207,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
return NULL;
}