loudmouth/lm-proxy.c
author Mikael Hallendal <micke@imendio.com>
Sat, 21 Jun 2008 13:19:21 +0200
changeset 417 364c17252e5f
parent 407 4401f2aa0692
child 420 f40434cca022
permissions -rw-r--r--
Added inlined documentation from generated through the Gtk-doc migration script. Started moving the documentation from the tmpl file to code inline to not have it spread out over to different places and files.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     2
/*
99
81e9d035de02 2004-10-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 87
diff changeset
     3
 * Copyright (C) 2004 Imendio AB
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
     4
 * Copyright (C) 2004 Josh Beam <josh@3ddrome.com>
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     5
 *
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     7
 * modify it under the terms of the GNU Lesser General Public License as
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     8
 * published by the Free Software Foundation; either version 2 of the
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     9
 * License, or (at your option) any later version.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    10
 *
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    11
 * This program is distributed in the hope that it will be useful,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    14
 * Lesser General Public License for more details.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    15
 *
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    16
 * You should have received a copy of the GNU Lesser General Public
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    17
 * License along with this program; if not, write to the
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    18
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    19
 * Boston, MA 02111-1307, USA.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    20
 */
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    21
417
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    22
/**
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    23
 * SECTION:LmProxy
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    24
 * @Short_description: API for the proxy support in Loudmouth
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    25
 * 
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    26
 * Use this together with an #LmConnection to get the connection to use connect through a proxy. Example of how to use the #LmProxy API.
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    27
 * <informalexample><programlisting><![CDATA[
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    28
 * LmConnection *connection;
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    29
 * LmProxy      *proxy;
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    30
 * 
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    31
 * connection = lm_connection_new ("myserver");
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    32
 * proxy = lm_proxy_new_with_server (LM_PROXY_TYPE_HTTP,
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    33
 * 				  "myproxyserver",
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    34
 * 				  8080);
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    35
 * lm_connection_set_proxy (connection, proxy);
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    36
 * ...]]></programlisting></informalexample>
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    37
 */
364c17252e5f Added inlined documentation from generated through the Gtk-doc migration script.
Mikael Hallendal <micke@imendio.com>
parents: 407
diff changeset
    38
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    39
#include <config.h>
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    40
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    41
#include <glib.h>
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    42
#include <string.h>
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    43
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    44
#ifndef G_OS_WIN32
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    45
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    46
#include <unistd.h>
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    47
#include <sys/socket.h>
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    48
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    49
#else  /* G_OS_WIN32 */
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    50
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    51
#include <winsock2.h>
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    52
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
    53
#endif /* G_OS_WIN32 */
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    54
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    55
#include "lm-internals.h"
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    56
#include "lm-proxy.h"
155
d24c4392d4e3 2006-06-16 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 140
diff changeset
    57
#include "lm-utils.h"
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    58
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    59
struct _LmProxy {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    60
	LmProxyType  type;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    61
	gchar       *server;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    62
	guint        port;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    63
	gchar       *username;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    64
	gchar       *password;
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
    65
	guint        io_watch;
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    67
        gint         ref_count;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    68
};
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    69
86
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    70
static void          proxy_free              (LmProxy       *proxy);
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    71
static gboolean      proxy_http_negotiate    (LmProxy       *proxy,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    72
					      gint           fd, 
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    73
					      const gchar   *server,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    74
					      guint          port);
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    75
static gboolean      proxy_negotiate         (LmProxy       *proxy,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    76
					      gint           fd,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    77
					      const gchar   *server,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    78
					      guint          port);
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    79
static gboolean      proxy_http_read_cb      (GIOChannel    *source,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    80
					      GIOCondition   condition,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    81
					      gpointer       data);
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    82
static gboolean      proxy_read_cb           (GIOChannel    *source,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    83
                                              GIOCondition   condition,
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
    84
                                              gpointer       data);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    85
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    86
static void
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    87
proxy_free (LmProxy *proxy)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    88
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    89
	g_free (proxy->server);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    90
	g_free (proxy->username);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    91
	g_free (proxy->password);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    92
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    93
	g_free (proxy);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    94
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    95
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    96
static gboolean
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    97
proxy_http_negotiate (LmProxy *proxy, gint fd, const gchar *server, guint port)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    98
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    99
	gchar *str;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   100
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   101
	if (proxy->username && proxy->password) {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   102
		gchar *tmp1;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   103
		gchar *tmp2;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   104
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   105
		tmp1 = g_strdup_printf ("%s:%s",
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   106
					proxy->username, 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   107
					proxy->password);
407
4401f2aa0692 Use GLib's base64 implementation
Mikael Hallendal <micke@imendio.com>
parents: 196
diff changeset
   108
		tmp2 = g_base64_encode ((const guchar *) tmp1, 
4401f2aa0692 Use GLib's base64 implementation
Mikael Hallendal <micke@imendio.com>
parents: 196
diff changeset
   109
					(gsize) strlen (tmp1));
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   110
		g_free (tmp1);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   111
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   112
		str = g_strdup_printf ("CONNECT %s:%u HTTP/1.1\r\nHost: %s:%u\r\nProxy-Authorization: Basic %s\r\n\r\n",
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   113
				       server, port,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   114
				       server, port,
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   115
				       tmp2);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   116
		g_free (tmp2);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   117
	} else {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   118
		str = g_strdup_printf ("CONNECT %s:%u HTTP/1.1\r\nHost: %s:%u\r\n\r\n",
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   119
				       server, port, 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   120
				       server, port);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   121
	}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   122
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   123
	send (fd, str, strlen (str), 0);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   124
	g_free (str);
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   125
	return TRUE;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   126
}
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   127
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   128
/* returns TRUE when connected through proxy */
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   129
static gboolean
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   130
proxy_http_read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   131
{
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   132
	gchar          buf[512];
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   133
	gsize          bytes_read;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   134
	GError        *error = NULL;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   135
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   136
	g_io_channel_read_chars (source, buf, 512, &bytes_read, &error);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   137
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   138
	if (bytes_read < 16) {
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   139
		return FALSE;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   140
	}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   141
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   142
	if (strncmp (buf, "HTTP/1.1 200", 12) != 0 &&
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   143
	    strncmp (buf, "HTTP/1.0 200", 12) != 0) {
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   144
		return FALSE;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   145
	}
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   146
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   147
	if (strncmp (buf + (bytes_read - 4), "\r\n\r\n", 4) != 0) {
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   148
		return FALSE;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   149
	}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   150
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   151
	return TRUE;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   152
}
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   153
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   154
static gboolean
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   155
proxy_read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   156
{
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   157
	LmConnectData *connect_data;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   158
	LmConnection  *connection;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   159
	LmProxy       *proxy;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   160
	gboolean       retval = FALSE;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   161
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   162
	connect_data = (LmConnectData *) data;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   163
	connection = connect_data->connection;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   164
	proxy = lm_connection_get_proxy (connection);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   165
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   166
	g_return_val_if_fail (proxy != NULL, FALSE);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   167
86
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
   168
	if (lm_connection_is_open (connection)) {
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   169
		return FALSE;
86
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
   170
	}
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   171
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   172
	switch (lm_proxy_get_type (proxy)) {
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   173
	default:
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   174
	case LM_PROXY_TYPE_NONE:
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   175
		g_assert_not_reached ();
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   176
		break;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   177
	case LM_PROXY_TYPE_HTTP:
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   178
		retval = proxy_http_read_cb (source, condition, data);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   179
		break;
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   180
	}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   181
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   182
	if (retval == TRUE) {
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   183
		g_source_remove (proxy->io_watch);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 180
diff changeset
   184
		_lm_socket_succeeded ((LmConnectData *) data);
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   185
	}
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   186
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   187
	return FALSE;
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   188
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   189
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   190
gboolean
86
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
   191
proxy_negotiate (LmProxy *proxy, gint fd, const gchar *server, guint port)
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   192
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   193
	g_return_val_if_fail (proxy != NULL, FALSE);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   194
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   195
	switch (proxy->type) {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   196
	case LM_PROXY_TYPE_NONE:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   197
		return TRUE;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   198
	case LM_PROXY_TYPE_HTTP:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   199
		return proxy_http_negotiate (proxy, fd, server, port);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   200
	default:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   201
		g_assert_not_reached ();
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   202
	}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   203
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   204
	return FALSE;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   205
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   206
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   207
gboolean
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   208
_lm_proxy_connect_cb (GIOChannel *source, GIOCondition condition, gpointer data)
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   209
{
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   210
	LmConnection  *connection;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   211
	LmConnectData *connect_data;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   212
	LmProxy       *proxy;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   213
	int            error;
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
   214
	socklen_t      len;
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   215
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   216
	connect_data = (LmConnectData *) data;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   217
	connection = connect_data->connection;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   218
	proxy = lm_connection_get_proxy (connection);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   219
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   220
	g_return_val_if_fail (proxy != NULL, FALSE);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   221
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   222
	if (condition == G_IO_ERR) {
180
2694ed676a99 2006-09-21 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 155
diff changeset
   223
		len = sizeof (error);
140
103227122f45 2006-04-19 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 121
diff changeset
   224
		_lm_sock_get_error (connect_data->fd, &error, &len);
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 180
diff changeset
   225
		_lm_socket_failed_with_error (connect_data, error);
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   226
		return FALSE;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   227
	} else if (condition == G_IO_OUT) {
86
cb65c1ec57a7 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 82
diff changeset
   228
		if (!proxy_negotiate (lm_connection_get_proxy (connection), connect_data->fd, lm_connection_get_server (connection), lm_connection_get_port (connection))) {
196
209bfa124066 Imported LmConnection refactor from old repository.
Mikael Hallendal <micke@imendio.com>
parents: 180
diff changeset
   229
			_lm_socket_failed (connect_data);
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   230
			return FALSE;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   231
		}
87
2d68f59e3fd4 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 86
diff changeset
   232
			
2d68f59e3fd4 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 86
diff changeset
   233
		proxy->io_watch = g_io_add_watch (connect_data->io_channel,
2d68f59e3fd4 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 86
diff changeset
   234
						  G_IO_IN|G_IO_ERR,
2d68f59e3fd4 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 86
diff changeset
   235
						  (GIOFunc) proxy_read_cb,
2d68f59e3fd4 2004-08-08 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 86
diff changeset
   236
						  connect_data);
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   237
	} else {
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   238
		g_assert_not_reached ();
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   239
	}
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   240
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   241
	return FALSE;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   242
}
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   243
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   244
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   245
 * lm_proxy_new
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   246
 * @type: the type of the new proxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   247
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   248
 * Creates a new Proxy. Used #lm_connection_set_proxy to make a connection 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   249
 * user this proxy.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   250
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   251
 * Return value: a newly create proxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   252
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   253
LmProxy * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   254
lm_proxy_new (LmProxyType type)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   255
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   256
	LmProxy *proxy;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   257
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   258
	proxy = g_new0 (LmProxy, 1);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   259
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   260
	proxy->ref_count = 1;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   261
	proxy->type = type;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   262
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   263
	switch (proxy->type) {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   264
	case LM_PROXY_TYPE_HTTP:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   265
		proxy->port = 8000;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   266
		break;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   267
	default:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   268
		proxy->port = 0;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   269
	}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   270
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   271
	return proxy;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   272
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   273
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   274
/**
82
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   275
 * lm_proxy_new_with_server
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   276
 * @type: the type of the new proxy
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   277
 * @server: the proxy server
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   278
 * @port: the proxy server port
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   279
 * 
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   280
 * Creates a new Proxy. Use #lm_connection_set_proxy to make a connection 
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   281
 * user this proxy.
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   282
 * 
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   283
 * Return value: a newly create proxy
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   284
 **/
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   285
LmProxy *
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   286
lm_proxy_new_with_server (LmProxyType  type,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   287
			  const gchar *server,
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   288
			  guint        port)
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   289
{
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   290
	LmProxy *proxy;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   291
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   292
	proxy = lm_proxy_new (type);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   293
	lm_proxy_set_server (proxy, server);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   294
	lm_proxy_set_port (proxy, port);
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   295
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   296
	return proxy;
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   297
}
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   298
a32b54e654e2 2004-03-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 66
diff changeset
   299
/**
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   300
 * lm_proxy_get_type
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   301
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   302
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   303
 * Fetches the proxy type
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   304
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   305
 * Return value: the type 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   306
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   307
LmProxyType
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   308
lm_proxy_get_type (LmProxy *proxy)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   309
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   310
	g_return_val_if_fail (proxy != NULL, LM_PROXY_TYPE_NONE);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   311
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   312
	return proxy->type;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   313
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   314
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   315
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   316
 * lm_proxy_set_type
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   317
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   318
 * @type: an LmProxyType
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   319
 *
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   320
 * Sets the proxy type for @proxy to @type. 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   321
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   322
void
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   323
lm_proxy_set_type (LmProxy *proxy, LmProxyType type)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   324
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   325
	g_return_if_fail (proxy != NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   326
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   327
	proxy->type = type;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   328
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   329
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   330
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   331
 * lm_proxy_get_server:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   332
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   333
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   334
 * Fetches the server address that @proxy is using.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   335
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   336
 * Return value: the proxy server address
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   337
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   338
const gchar *
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   339
lm_proxy_get_server (LmProxy *proxy)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   340
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   341
	g_return_val_if_fail (proxy != NULL, NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   342
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   343
	return proxy->server;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   344
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   345
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   346
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   347
 * lm_proxy_set_server:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   348
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   349
 * @server: Address of the proxy server
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   350
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   351
 * Sets the server address for @proxy to @server. 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   352
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   353
void
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   354
lm_proxy_set_server (LmProxy *proxy, const gchar *server)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   355
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   356
	g_return_if_fail (proxy != NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   357
	g_return_if_fail (server != NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   358
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   359
	g_free (proxy->server);
155
d24c4392d4e3 2006-06-16 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 140
diff changeset
   360
	proxy->server = _lm_utils_hostname_to_punycode (server);
66
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   361
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   362
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   363
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   364
 * lm_proxy_get_port:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   365
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   366
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   367
 * Fetches the port that @proxy is using.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   368
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   369
 * Return value: The port 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   370
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   371
guint
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   372
lm_proxy_get_port (LmProxy *proxy)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   373
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   374
	g_return_val_if_fail (proxy != NULL, 0);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   375
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   376
	return proxy->port;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   377
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   378
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   379
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   380
 * lm_proxy_set_port:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   381
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   382
 * @port: proxy server port
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   383
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   384
 * Sets the server port that @proxy will be using.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   385
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   386
void
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   387
lm_proxy_set_port (LmProxy *proxy, guint port)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   388
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   389
	g_return_if_fail (proxy != NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   390
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   391
	proxy->port = port;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   392
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   393
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   394
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   395
 * lm_proxy_get_username:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   396
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   397
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   398
 * Fetches the username that @proxy is using.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   399
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   400
 * Return value: the username
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   401
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   402
const gchar *
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   403
lm_proxy_get_username (LmProxy *proxy)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   404
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   405
	g_return_val_if_fail (proxy != NULL, NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   406
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   407
	return proxy->username;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   408
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   409
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   410
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   411
 * lm_proxy_set_username:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   412
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   413
 * @username: Username
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   414
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   415
 * Sets the username for @proxy to @username or %NULL to unset.  
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   416
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   417
void
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   418
lm_proxy_set_username (LmProxy *proxy, const gchar *username)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   419
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   420
	g_return_if_fail (proxy != NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   421
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   422
	g_free (proxy->username);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   423
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   424
	if (username) {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   425
		proxy->username = g_strdup (username);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   426
	} else {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   427
		proxy->username = NULL;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   428
	}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   429
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   430
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   431
 * lm_proxy_get_password:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   432
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   433
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   434
 * Fetches the password that @proxy is using.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   435
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   436
 * Return value: the proxy password
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   437
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   438
const gchar *
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   439
lm_proxy_get_password (LmProxy *proxy)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   440
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   441
	g_return_val_if_fail (proxy != NULL, NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   442
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   443
	return proxy->password;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   444
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   445
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   446
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   447
 * lm_proxy_set_password:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   448
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   449
 * @password: Password
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   450
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   451
 * Sets the password for @proxy to @password or %NULL to unset. 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   452
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   453
void
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   454
lm_proxy_set_password (LmProxy *proxy, const gchar *password)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   455
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   456
	g_return_if_fail (proxy != NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   457
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   458
	g_free (proxy->password);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   459
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   460
	if (password) {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   461
		proxy->password = g_strdup (password);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   462
	} else {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   463
		proxy->password = NULL;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   464
	}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   465
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   466
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   467
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   468
 * lm_proxy_ref:
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   469
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   470
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   471
 * Adds a reference to @proxy.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   472
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   473
 * Return value: the proxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   474
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   475
LmProxy *
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   476
lm_proxy_ref (LmProxy *proxy)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   477
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   478
	g_return_val_if_fail (proxy != NULL, NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   479
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   480
	proxy->ref_count++;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   481
	return proxy;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   482
}
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   483
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   484
/**
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   485
 * lm_proxy_unref
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   486
 * @proxy: an #LmProxy
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   487
 * 
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   488
 * Removes a reference from @proxy. When no more references are present
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   489
 * @proxy is freed.
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   490
 **/
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   491
void
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   492
lm_proxy_unref (LmProxy *proxy)
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   493
{
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   494
	g_return_if_fail (proxy != NULL);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   495
	
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   496
	proxy->ref_count--;
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   497
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   498
	if (proxy->ref_count == 0) {
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   499
		proxy_free (proxy);
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   500
        }
577d5059b718 2004-01-15 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   501
}