Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
03317d10
Commit
03317d10
authored
Aug 17, 2018
by
Jacek Caban
Committed by
Alexandre Julliard
Aug 17, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Use separated async queue for listeners.
Signed-off-by:
Jacek Caban
<
jacek@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
a03d0a8e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
5 additions
and
3 deletions
+5
-3
named_pipe.c
server/named_pipe.c
+5
-3
No files found.
server/named_pipe.c
View file @
03317d10
...
...
@@ -83,6 +83,7 @@ struct pipe_server
struct
list
entry
;
/* entry in named pipe servers list */
enum
pipe_state
state
;
/* server state */
unsigned
int
options
;
/* pipe options */
struct
async_queue
listen_q
;
/* listen queue */
};
struct
pipe_client
...
...
@@ -424,6 +425,7 @@ static void pipe_server_destroy( struct object *obj)
if
(
!--
pipe
->
instances
)
unlink_named_object
(
&
pipe
->
obj
);
list_remove
(
&
server
->
entry
);
free_async_queue
(
&
server
->
listen_q
);
pipe_end_disconnect
(
&
server
->
pipe_end
,
STATUS_PIPE_BROKEN
);
pipe_end_destroy
(
&
server
->
pipe_end
);
...
...
@@ -1003,8 +1005,8 @@ static int pipe_server_ioctl( struct fd *fd, ioctl_code_t code, struct async *as
return
0
;
}
fd_queue_async
(
server
->
pipe_end
.
fd
,
async
,
ASYNC_TYPE_WAIT
);
server
->
pipe_end
.
state
=
FILE_PIPE_LISTENING_STATE
;
queue_async
(
&
server
->
listen_q
,
async
);
set_server_state
(
server
,
ps_wait_open
);
async_wake_up
(
&
server
->
pipe_end
.
pipe
->
waiters
,
STATUS_SUCCESS
);
set_error
(
STATUS_PENDING
);
...
...
@@ -1088,6 +1090,7 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned
}
allow_fd_caching
(
server
->
pipe_end
.
fd
);
set_fd_signaled
(
server
->
pipe_end
.
fd
,
1
);
init_async_queue
(
&
server
->
listen_q
);
set_server_state
(
server
,
ps_idle_server
);
return
server
;
}
...
...
@@ -1178,8 +1181,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
if
((
client
=
create_pipe_client
(
options
,
pipe
,
pipe
->
outsize
,
options
)))
{
if
(
server
->
state
==
ps_wait_open
)
fd_async_wake_up
(
server
->
pipe_end
.
fd
,
ASYNC_TYPE_WAIT
,
STATUS_SUCCESS
);
async_wake_up
(
&
server
->
listen_q
,
STATUS_SUCCESS
);
server
->
pipe_end
.
state
=
FILE_PIPE_CONNECTED_STATE
;
set_server_state
(
server
,
ps_connected_server
);
server
->
pipe_end
.
connection
=
&
client
->
pipe_end
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment