[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