rfbsrc: Cleanly handle security negotiation failure
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Mon, 14 Mar 2016 19:05:45 +0000 (15:05 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 5 Apr 2016 17:33:24 +0000 (13:33 -0400)
When the security cannot be negotiated, the server returns
security type of 0 (failure). In that case, the next step is
to read the error reason string.

gst/librfb/rfbdecoder.c

index bd225ad..e332c04 100644 (file)
@@ -444,8 +444,11 @@ rfb_decoder_state_wait_for_security (RfbDecoder * decoder)
     GST_DEBUG ("security = %d", decoder->security_type);
 
     g_return_val_if_fail (decoder->security_type < 3, FALSE);
-    g_return_val_if_fail (decoder->security_type != SECURITY_FAIL,
-        rfb_decoder_state_reason (decoder));
+
+    if (decoder->security_type == SECURITY_FAIL) {
+      decoder->state = rfb_decoder_state_reason;
+      return TRUE;
+    }
   } else {
     /* \TODO Add behavior for the rfb 3.7 and 3.8 servers */
     GST_WARNING ("Other versions are not yet supported");