[telepathy-gabble/master] fd.o#22968: GibberUnixTransport: make credential-passing support optional and detectable

Simon McVittie simon.mcvittie at collabora.co.uk
Thu Sep 10 06:19:25 PDT 2009


Our implementation only works for Linux so far, so we need to be able to
avoid advertising credential-passing on e.g. Darwin.
---
 lib/gibber/gibber-unix-transport.c |   47 ++++++++++++++++++++++++++++++++++++
 lib/gibber/gibber-unix-transport.h |    2 +
 2 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/lib/gibber/gibber-unix-transport.c b/lib/gibber/gibber-unix-transport.c
index 244f468..7c800d8 100644
--- a/lib/gibber/gibber-unix-transport.c
+++ b/lib/gibber/gibber-unix-transport.c
@@ -194,6 +194,17 @@ gibber_unix_transport_new_from_fd (int fd)
   return transport;
 }
 
+/* Patches that reimplement these functions for non-Linux would be welcome
+ * (please file a bug) */
+
+#if defined(__linux__)
+
+gboolean
+gibber_unix_transport_supports_credentials (void)
+{
+  return TRUE;
+}
+
 gboolean
 gibber_unix_transport_send_credentials (GibberUnixTransport *transport,
     const guint8 *data,
@@ -356,3 +367,39 @@ gibber_unix_transport_recv_credentials (GibberUnixTransport *self,
   priv->recv_creds_data = user_data;
   return TRUE;
 }
+
+#else /* OSs where we have no implementation */
+
+gboolean
+gibber_unix_transport_supports_credentials (void)
+{
+  return FALSE;
+}
+
+gboolean
+gibber_unix_transport_recv_credentials (GibberUnixTransport *self,
+    GibberUnixTransportRecvCredentialsCb callback,
+    gpointer user_data)
+{
+  DEBUG ("stub implementation, failing");
+  return FALSE;
+}
+
+gboolean
+gibber_unix_transport_send_credentials (GibberUnixTransport *transport,
+    const guint8 *data,
+    gsize size)
+{
+  DEBUG ("stub implementation, failing");
+  return FALSE;
+}
+
+static GibberFdIOResult
+gibber_unix_transport_read (GibberFdTransport *transport,
+    GIOChannel *channel,
+    GError **error)
+{
+  return gibber_fd_transport_read (transport, channel, error);
+}
+
+#endif
diff --git a/lib/gibber/gibber-unix-transport.h b/lib/gibber/gibber-unix-transport.h
index b89a0dd..3aad8d4 100644
--- a/lib/gibber/gibber-unix-transport.h
+++ b/lib/gibber/gibber-unix-transport.h
@@ -79,6 +79,8 @@ GType gibber_unix_transport_get_type (void);
   (G_TYPE_INSTANCE_GET_CLASS ((obj), GIBBER_TYPE_UNIX_TRANSPORT, \
    GibberUnixTransportClass))
 
+gboolean gibber_unix_transport_supports_credentials (void);
+
 GibberUnixTransport * gibber_unix_transport_new (void);
 
 GibberUnixTransport * gibber_unix_transport_new_from_fd (int fd);
-- 
1.5.6.5




More information about the telepathy-commits mailing list