- source_add(mydata->pipe_fds[0], G_IO_IN | G_IO_ERR, 40, receive_data,
- session_device_id);
+ channels[0] = g_io_channel_unix_new(mydata->pipe_fds[0]);
+ channels[1] = g_io_channel_unix_new(mydata->pipe_fds[1]);
+
+ /* Set channel encoding to binary (default is UTF-8). */
+ g_io_channel_set_encoding(channels[0], NULL, NULL);
+ g_io_channel_set_encoding(channels[1], NULL, NULL);
+
+ /* Make channels to unbuffered. */
+ g_io_channel_set_buffered(channels[0], FALSE);
+ g_io_channel_set_buffered(channels[1], FALSE);
+
+ sr_source_add(mydata->pipe_fds[0], G_IO_IN | G_IO_ERR, 40,
+ receive_data, session_device_id);