#include "config.h"
-#include <sys/types.h>
-#include <sys/socket.h>
-
#include "gdbusauth.h"
#include "gdbusauthmechanismanon.h"
#include "gioenumtypes.h"
#include "gcredentials.h"
#include "gdbusprivate.h"
+#include "giostream.h"
+#include "gdatainputstream.h"
+#include "gdataoutputstream.h"
#ifdef G_OS_UNIX
+#include <sys/types.h>
+#include <sys/socket.h>
#include "gunixconnection.h"
#include "gunixcredentialsmessage.h"
#endif
#include "glibintl.h"
-#include "gioalias.h"
-
-#define DEBUG_ENABLED 0
static void
debug_print (const gchar *message, ...)
{
-#if DEBUG_ENABLED
if (G_UNLIKELY (_g_dbus_debug_authentication ()))
{
gchar *s;
va_list var_args;
guint n;
+ _g_dbus_debug_print_lock ();
+
va_start (var_args, message);
s = g_strdup_vprintf (message, var_args);
va_end (var_args);
g_print ("GDBus-debug:Auth: %s\n", str->str);
g_string_free (str, TRUE);
g_free (s);
+
+ _g_dbus_debug_print_unlock ();
}
-#endif
}
typedef struct
dis = G_DATA_INPUT_STREAM (g_data_input_stream_new (g_io_stream_get_input_stream (auth->priv->stream)));
dos = G_DATA_OUTPUT_STREAM (g_data_output_stream_new (g_io_stream_get_output_stream (auth->priv->stream)));
+ g_filter_input_stream_set_close_base_stream (G_FILTER_INPUT_STREAM (dis), FALSE);
+ g_filter_output_stream_set_close_base_stream (G_FILTER_OUTPUT_STREAM (dos), FALSE);
g_data_input_stream_set_newline_type (dis, G_DATA_STREAM_NEWLINE_TYPE_CR_LF);
debug_print ("CLIENT: WaitingForAgreeUnixFD, read=`%s'", line);
if (g_strcmp0 (line, "AGREE_UNIX_FD") == 0)
{
+ g_free (line);
negotiated_capabilities |= G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING;
s = "BEGIN\r\n";
debug_print ("CLIENT: writing `%s'", s);
{
gchar *encoded;
gchar *decoded_data;
- gsize decoded_data_len;
+ gsize decoded_data_len = 0;
encoded = g_strdup (line + 5);
g_free (line);
g_object_unref (mech);
g_ptr_array_unref (attempted_auth_mechs);
g_strfreev (supported_auth_mechs);
- g_object_ref (dis);
- g_object_ref (dos);
+ g_object_unref (dis);
+ g_object_unref (dos);
/* ensure return value is NULL if error is set */
if (error != NULL && *error != NULL)
dis = G_DATA_INPUT_STREAM (g_data_input_stream_new (g_io_stream_get_input_stream (auth->priv->stream)));
dos = G_DATA_OUTPUT_STREAM (g_data_output_stream_new (g_io_stream_get_output_stream (auth->priv->stream)));
+ g_filter_input_stream_set_close_base_stream (G_FILTER_INPUT_STREAM (dis), FALSE);
+ g_filter_output_stream_set_close_base_stream (G_FILTER_OUTPUT_STREAM (dos), FALSE);
g_data_input_stream_set_newline_type (dis, G_DATA_STREAM_NEWLINE_TYPE_CR_LF);
{
local_error = NULL;
byte = g_data_input_stream_read_byte (dis, cancellable, &local_error);
+ byte = byte; /* To avoid -Wunused-but-set-variable */
if (local_error != NULL)
{
g_propagate_error (error, local_error);
{
gchar *encoded;
gchar *decoded_data;
- gsize decoded_data_len;
+ gsize decoded_data_len = 0;
encoded = g_strdup (line + 5);
g_free (line);
if (mech != NULL)
g_object_unref (mech);
if (dis != NULL)
- g_object_ref (dis);
- if (dis != NULL)
- g_object_ref (dos);
+ g_object_unref (dis);
+ if (dos != NULL)
+ g_object_unref (dos);
/* ensure return value is FALSE if error is set */
if (error != NULL && *error != NULL)
}
/* ---------------------------------------------------------------------------------------------------- */
-
-#define __G_DBUS_AUTH_C__
-#include "gioaliasdef.c"