[telepathy-salut/master] pass a GError to GibberUnixTransportRecvCredentialsCb
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Thu May 14 08:31:58 PDT 2009
---
lib/gibber/gibber-unix-transport.c | 19 +++++++++++++++----
lib/gibber/gibber-unix-transport.h | 2 ++
lib/gibber/tests/check-gibber-unix-transport.c | 2 ++
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/lib/gibber/gibber-unix-transport.c b/lib/gibber/gibber-unix-transport.c
index 8719714..244f468 100644
--- a/lib/gibber/gibber-unix-transport.c
+++ b/lib/gibber/gibber-unix-transport.c
@@ -286,10 +286,13 @@ gibber_unix_transport_read (GibberFdTransport *transport,
if (bytes_read == -1)
{
- g_set_error_literal (error, G_IO_CHANNEL_ERROR,
+ GError *err = NULL;
+
+ g_set_error_literal (&err, G_IO_CHANNEL_ERROR,
g_io_channel_error_from_errno (errno), "recvmsg failed");
- priv->recv_creds_cb (self, NULL, NULL, priv->recv_creds_data);
+ priv->recv_creds_cb (self, NULL, NULL, err, priv->recv_creds_data);
+ g_propagate_error (error, err);
priv->recv_creds_cb = NULL;
priv->recv_creds_data = NULL;
@@ -307,9 +310,16 @@ gibber_unix_transport_read (GibberFdTransport *transport,
ch = CMSG_FIRSTHDR (&msg);
if (ch == NULL)
{
+ GError *err = NULL;
+
DEBUG ("Message doesn't contain credentials");
- priv->recv_creds_cb (self, &buf, NULL, priv->recv_creds_data);
+ g_set_error_literal (&err, GIBBER_UNIX_TRANSPORT_ERROR,
+ GIBBER_UNIX_TRANSPORT_ERROR_NO_CREDENTIALS,
+ "no credentials received");
+
+ priv->recv_creds_cb (self, &buf, NULL, err, priv->recv_creds_data);
+ g_error_free (err);
}
else
{
@@ -320,7 +330,8 @@ gibber_unix_transport_read (GibberFdTransport *transport,
credentials.uid = cred->uid;
credentials.gid = cred->gid;
- priv->recv_creds_cb (self, &buf, &credentials, priv->recv_creds_data);
+ priv->recv_creds_cb (self, &buf, &credentials, NULL,
+ priv->recv_creds_data);
}
priv->recv_creds_cb = NULL;
diff --git a/lib/gibber/gibber-unix-transport.h b/lib/gibber/gibber-unix-transport.h
index cdd68b9..b89a0dd 100644
--- a/lib/gibber/gibber-unix-transport.h
+++ b/lib/gibber/gibber-unix-transport.h
@@ -45,6 +45,7 @@ typedef enum
{
GIBBER_UNIX_TRANSPORT_ERROR_CONNECT_FAILED,
GIBBER_UNIX_TRANSPORT_ERROR_FAILED,
+ GIBBER_UNIX_TRANSPORT_ERROR_NO_CREDENTIALS,
} GibberUnixTransportError;
typedef struct _GibberUnixTransport GibberUnixTransport;
@@ -98,6 +99,7 @@ typedef void (*GibberUnixTransportRecvCredentialsCb) (
GibberUnixTransport *transport,
GibberBuffer *buffer,
GibberCredentials *credentials,
+ GError *error,
gpointer user_data);
gboolean gibber_unix_transport_recv_credentials (GibberUnixTransport *transport,
diff --git a/lib/gibber/tests/check-gibber-unix-transport.c b/lib/gibber/tests/check-gibber-unix-transport.c
index 1530730..409b6e4 100644
--- a/lib/gibber/tests/check-gibber-unix-transport.c
+++ b/lib/gibber/tests/check-gibber-unix-transport.c
@@ -142,12 +142,14 @@ static void
get_credentials_cb (GibberUnixTransport *transport,
GibberBuffer *buffer,
GibberCredentials *credentials,
+ GError *error,
gpointer user_data)
{
GMainLoop *loop = (GMainLoop *) user_data;
received_credentials = TRUE;
+ g_assert (error == NULL);
g_assert (strcmp ((gchar *) buffer->data, DATA) == 0);
g_assert (credentials->pid == getpid ());
g_assert (credentials->uid == getuid ());
--
1.5.6.5
More information about the telepathy-commits
mailing list