Hello community,

here is the log from the commit of package vncmanager for openSUSE:Factory 
checked in at 2018-02-15 19:31:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vncmanager (Old)
 and      /work/SRC/openSUSE:Factory/.vncmanager.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "vncmanager"

Thu Feb 15 19:31:36 2018 rev:6 rq:577032 version:1.0.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/vncmanager/vncmanager.changes    2017-08-12 
20:28:19.322614604 +0200
+++ /work/SRC/openSUSE:Factory/.vncmanager.new/vncmanager.changes       
2018-02-15 19:31:37.358512988 +0100
@@ -1,0 +2,6 @@
+Thu Feb 15 13:42:56 UTC 2018 - [email protected]
+
+- U_ControllerConnection-Split-iostream-into-istream-and.patch
+  * Do not try to seek on unix socket. (bnc#1076730)
+
+-------------------------------------------------------------------

New:
----
  U_ControllerConnection-Split-iostream-into-istream-and.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ vncmanager.spec ++++++
--- /var/tmp/diff_new_pack.B7a9PR/_old  2018-02-15 19:31:38.274480113 +0100
+++ /var/tmp/diff_new_pack.B7a9PR/_new  2018-02-15 19:31:38.278479969 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package vncmanager
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -51,6 +51,7 @@
 Patch2:         n_use_with_vnc_key_wrapper.patch
 Patch3:         U_Add-xvnc-args-configuration-option.patch
 Patch4:         n_disable_mit_shm.patch
+Patch5:         U_ControllerConnection-Split-iostream-into-istream-and.patch
 
 %description
 Session manager for VNC. It listens on VNC port and spawns Xvnc processes for 
incoming clients.
@@ -74,6 +75,7 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
 
 %build
 %cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=ON

++++++ U_ControllerConnection-Split-iostream-into-istream-and.patch ++++++
>From 4bef799592eab400b0e050988ff61fa21935d86c Mon Sep 17 00:00:00 2001
From: Michal Srb <[email protected]>
Date: Thu, 15 Feb 2018 14:38:04 +0100
Subject: [PATCH] ControllerConnection: Split iostream into istream and
 ostream.

The boost::iostreams::file_descriptor is seekable by default, but seeking is
not possible on unix socket. Unfortunatelly there does not seem to be a way to
turn it into (non seekable) bidirectional, so lets split it into separate input
and output.
---
 ControllerConnection.cpp | 24 +++++++++++++-----------
 ControllerConnection.h   |  7 +++++--
 2 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/ControllerConnection.cpp b/ControllerConnection.cpp
index 17822e6..a1b4739 100644
--- a/ControllerConnection.cpp
+++ b/ControllerConnection.cpp
@@ -38,8 +38,10 @@
 ControllerConnection::ControllerConnection(XvncManager &vncManager, int fd)
     : m_vncManager(vncManager)
     , m_fd(fd)
-    , m_controllerStreamBuffer(boost::iostreams::file_descriptor(fd, 
boost::iostreams::close_handle))
-    , m_controllerStream(&m_controllerStreamBuffer)
+    , m_controllerStreamBufferIn(boost::iostreams::file_descriptor(fd, 
boost::iostreams::close_handle))
+    , m_controllerStreamBufferOut(boost::iostreams::file_descriptor(fd, 
boost::iostreams::never_close_handle))
+    , m_controllerStreamIn(&m_controllerStreamBufferIn)
+    , m_controllerStreamOut(&m_controllerStreamBufferOut)
 {}
 
 void ControllerConnection::start()
@@ -48,7 +50,7 @@ void ControllerConnection::start()
 
     try {
         if (initialize()) {
-            while (m_controllerStream.good()) {
+            while (m_controllerStreamIn.good()) {
                 receive();
             }
         }
@@ -64,19 +66,19 @@ void ControllerConnection::start()
 bool ControllerConnection::initialize()
 {
     int displayNumber;
-    m_controllerStream >> displayNumber;
+    m_controllerStreamIn >> displayNumber;
 
     m_xvnc = m_vncManager.getSessionByDisplayNumber(displayNumber);
     if (m_xvnc) {
-        m_controllerStream << "OK" << std::endl;
-        m_controllerStream.flush();
+        m_controllerStreamOut << "OK" << std::endl;
+        m_controllerStreamOut.flush();
     } else {
         Log::notice() << "Controller " << (intptr_t)this << " asked for 
display number " << displayNumber << " which is not managed by vncmanager." << 
std::endl;
         return false;
     }
 
     std::string key;
-    m_controllerStream >> key;
+    m_controllerStreamIn >> key;
 
     for (int tries = 0; ; tries++) {
         if (m_xvnc->isKeyApproved(key)) {
@@ -91,8 +93,8 @@ bool ControllerConnection::initialize()
         std::this_thread::sleep_for(std::chrono::milliseconds(100)); // TODO: 
Tune
     }
 
-    m_controllerStream << "OK" << std::endl;
-    m_controllerStream.flush();
+    m_controllerStreamOut << "OK" << std::endl;
+    m_controllerStreamOut.flush();
 
     struct ucred ucred;
     socklen_t len = sizeof(struct ucred);
@@ -111,11 +113,11 @@ bool ControllerConnection::initialize()
 void ControllerConnection::receive()
 {
     std::string cmd;
-    m_controllerStream >> cmd;
+    m_controllerStreamIn >> cmd;
 
     if (cmd == "VISIBLE") {
         bool yes;
-        m_controllerStream >> yes;
+        m_controllerStreamIn >> yes;
         m_xvnc->markVisible(yes);
         return;
     }
diff --git a/ControllerConnection.h b/ControllerConnection.h
index 997c2a6..207357b 100644
--- a/ControllerConnection.h
+++ b/ControllerConnection.h
@@ -29,6 +29,7 @@
 
 #include <memory>
 
+#include <boost/iostreams/categories.hpp>
 #include <boost/iostreams/device/file_descriptor.hpp>
 #include <boost/iostreams/stream.hpp>
 
@@ -78,8 +79,10 @@ private:
     std::shared_ptr<Xvnc> m_xvnc;
 
     int m_fd;
-    boost::iostreams::stream_buffer<boost::iostreams::file_descriptor> 
m_controllerStreamBuffer;
-    std::iostream m_controllerStream;
+    boost::iostreams::stream_buffer<boost::iostreams::file_descriptor, 
std::char_traits<char>, std::allocator<char>, boost::iostreams::input> 
m_controllerStreamBufferIn;
+    boost::iostreams::stream_buffer<boost::iostreams::file_descriptor, 
std::char_traits<char>, std::allocator<char>, boost::iostreams::output> 
m_controllerStreamBufferOut;
+    std::istream m_controllerStreamIn;
+    std::ostream m_controllerStreamOut;
 };
 
 #endif // CONTROLLERCONNECTION_H
-- 
2.13.6


Reply via email to