Revision: 4583
          http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4583&view=rev
Author:   ossman_
Date:     2011-07-12 16:58:12 +0000 (Tue, 12 Jul 2011)

Log Message:
-----------
Mostly we will catch socket errors when processing incoming data, but
sometimes we'll time it so that a write will be the initial offender. Make
sure these cases are also properly caught and dealt with.

Modified Paths:
--------------
    trunk/vncviewer/Viewport.cxx

Modified: trunk/vncviewer/Viewport.cxx
===================================================================
--- trunk/vncviewer/Viewport.cxx        2011-07-12 16:56:34 UTC (rev 4582)
+++ trunk/vncviewer/Viewport.cxx        2011-07-12 16:58:12 UTC (rev 4583)
@@ -327,8 +327,14 @@
     assert(ret < (Fl::event_length() + 1));
 
     vlog.debug("Sending clipboard data: '%s'", buffer);
-    cc->writer()->clientCutText(buffer, ret);
 
+    try {
+      cc->writer()->clientCutText(buffer, ret);
+    } catch (rdr::Exception& e) {
+      vlog.error(e.str());
+      exit_vncviewer(e.str());
+    }
+
     delete [] buffer;
 
     return 1;
@@ -455,7 +461,12 @@
 {
   if (!viewOnly) {
     if (pointerEventInterval == 0 || buttonMask != lastButtonMask) {
-      cc->writer()->pointerEvent(pos, buttonMask);
+      try {
+        cc->writer()->pointerEvent(pos, buttonMask);
+      } catch (rdr::Exception& e) {
+        vlog.error(e.str());
+        exit_vncviewer(e.str());
+      }
     } else {
       if (!Fl::has_timeout(handlePointerTimeout, this))
         Fl::add_timeout((double)pointerEventInterval/1000.0,
@@ -473,7 +484,12 @@
 
   assert(self);
 
-  self->cc->writer()->pointerEvent(self->lastPointerPos, self->lastButtonMask);
+  try {
+    self->cc->writer()->pointerEvent(self->lastPointerPos, 
self->lastButtonMask);
+  } catch (rdr::Exception& e) {
+    vlog.error(e.str());
+    exit_vncviewer(e.str());
+  }
 }
 
 
@@ -683,7 +699,12 @@
 
     vlog.debug("Key released: 0x%04x => 0x%04x", origKeyCode, iter->second);
 
-    cc->writer()->keyEvent(iter->second, false);
+    try {
+      cc->writer()->keyEvent(iter->second, false);
+    } catch (rdr::Exception& e) {
+      vlog.error(e.str());
+      exit_vncviewer(e.str());
+    }
 
     downKeySym.erase(iter);
 
@@ -698,7 +719,13 @@
              origKeyCode, keyCode, keyText, keySym);
 
   downKeySym[origKeyCode] = keySym;
-  cc->writer()->keyEvent(keySym, down);
+
+  try {
+    cc->writer()->keyEvent(keySym, down);
+  } catch (rdr::Exception& e) {
+    vlog.error(e.str());
+    exit_vncviewer(e.str());
+  }
 }
 
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric 
Ries, the creator of the Lean Startup Methodology on "Lean Startup 
Secrets Revealed." This video shows you how to validate your ideas, 
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
Tigervnc-commits mailing list
Tigervnc-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits

Reply via email to