Orestis 54e7a31568 Use ipc queue for all messages (#3585)
I was able to reproduce #3579 in Linux by running:
`sudo sysctl net.core.wmem_default=10000`

If a subscription message was too big to be sent at once, it was
possible to break a client by sending a reply to an other message sent
by the client. Eg:
- Write 8192 out of 11612 bytes of a workspace event.
- Blockingly write the reply to a workspace change message.
- Write the rest 3420 bytes of the workspace event.

This commit fixes this by utilizing the ipc queue for all types of
writes.

ipc_receive_message can only be called from a callback started in
ipc_new_client. This callback uses the same file descriptor with the
client also created in ipc_new_client. When the client is deleted, the
read callback is now also stopped. Thus, we can assume that whenever
ipc_receive_message is called, the corresponding client should still
exist.

- ipc_client now contains pointers to both write and read watchers. When
freed, a client will stop both of them.
- IPC_HANDLERs now work with ipc_clients instead of fds.

Fixes #3579.
2019-01-23 21:21:28 +01:00
2018-11-04 14:47:46 +01:00
2018-10-13 21:10:09 +03:00
2018-10-13 21:10:11 +03:00
2018-11-03 09:16:16 +01:00
2018-10-13 21:10:10 +03:00
2018-11-04 14:47:34 +01:00
2018-05-01 13:49:55 +03:00
2011-08-28 17:44:42 +02:00
2018-11-04 14:47:34 +01:00
2018-10-26 09:58:04 -07:00
2017-09-24 19:21:26 +02:00
2018-11-04 14:47:34 +01:00
2018-03-10 18:53:20 +01:00

Logo i3: A tiling window manager

Build Status Issue Stats Pull Request Stats

i3 is a tiling window manager for X11.

For more information about i3, please see the project's website and online documentation.

For information about contributing to i3, please see CONTRIBUTING.md.

Description
No description provided
Readme 15 MiB
Languages
C 58.6%
Perl 29%
Raku 9.4%
Ruby 1.2%
Shell 0.7%
Other 1.1%