summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSenko Rasic <senko.rasic@collabora.co.uk>2007-02-02 18:49:55 +0000
committerSenko Rasic <senko.rasic@collabora.co.uk>2007-02-02 18:49:55 +0000
commit033964912b147178ba59f8709cdac889bf3be1d1 (patch)
treec43cc736d7cda16e2d158ace3ab46d99eb9a9ebf
parent74cb66b92515dd110b66bfebb57a58e7de906136 (diff)
downloadtelepathy-gabble-033964912b147178ba59f8709cdac889bf3be1d1.tar.gz
GabbleConnection: optionally randomize resource string to avoid collisions; ask for roster before signalling presence as per RFC
20070202184955-01440-a7e333a3e05c6346c24441af2f259192d71953f9.gz
-rw-r--r--src/gabble-connection-manager.c10
-rw-r--r--src/gabble-connection.c50
2 files changed, 9 insertions, 51 deletions
diff --git a/src/gabble-connection-manager.c b/src/gabble-connection-manager.c
index e1c7b1f03..927fd6ea3 100644
--- a/src/gabble-connection-manager.c
+++ b/src/gabble-connection-manager.c
@@ -162,8 +162,6 @@ struct _GabbleParams {
guint stun_port;
gboolean ignore_ssl_errors;
gchar *alias;
- gchar *auth_mac;
- gchar *auth_btid;
};
enum {
@@ -183,8 +181,6 @@ enum {
JABBER_PARAM_STUN_PORT,
JABBER_PARAM_IGNORE_SSL_ERRORS,
JABBER_PARAM_ALIAS,
- JABBER_PARAM_AUTH_MAC,
- JABBER_PARAM_AUTH_BTID,
LAST_JABBER_PARAM
};
@@ -205,8 +201,6 @@ static const GabbleParamSpec jabber_params[] = {
{ "stun-port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT, TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(GABBLE_PARAMS_DEFAULT_STUN_PORT), G_STRUCT_OFFSET(GabbleParams, stun_port) },
{ "ignore-ssl-errors", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN, TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE), G_STRUCT_OFFSET(GabbleParams, ignore_ssl_errors) },
{ "alias", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL, G_STRUCT_OFFSET(GabbleParams, alias) },
- { "mac", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL, G_STRUCT_OFFSET(GabbleParams, auth_mac) },
- { "btid", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL, G_STRUCT_OFFSET(GabbleParams, auth_btid) },
{ NULL, NULL, 0, 0, NULL, 0 }
};
@@ -643,10 +637,6 @@ gabble_connection_manager_request_connection (GabbleConnectionManager *self,
JABBER_PARAM_IGNORE_SSL_ERRORS,
params.ignore_ssl_errors);
SET_PROPERTY_IF_PARAM_SET ("alias", JABBER_PARAM_ALIAS, params.alias);
- SET_PROPERTY_IF_PARAM_SET ("auth-mac", JABBER_PARAM_AUTH_MAC,
- params.auth_mac);
- SET_PROPERTY_IF_PARAM_SET ("auth-btid", JABBER_PARAM_AUTH_BTID,
- params.auth_btid);
/* split up account into username, stream-server and resource */
if (!_gabble_connection_set_properties_from_account (conn, params.account, error))
diff --git a/src/gabble-connection.c b/src/gabble-connection.c
index 085881dda..9a8f4cd55 100644
--- a/src/gabble-connection.c
+++ b/src/gabble-connection.c
@@ -167,8 +167,6 @@ enum
PROP_STUN_RELAY_PASSWORD,
PROP_IGNORE_SSL_ERRORS,
PROP_ALIAS,
- PROP_AUTH_MAC,
- PROP_AUTH_BTID,
LAST_PROPERTY
};
@@ -240,8 +238,6 @@ struct _GabbleConnectionPrivate
gchar *resource;
gint8 priority;
gchar *alias;
- gchar *auth_mac;
- gchar *auth_btid;
/* reference to conference server name */
const gchar *conference_server;
@@ -421,12 +417,6 @@ gabble_connection_get_property (GObject *object,
case PROP_ALIAS:
g_value_set_string (value, priv->alias);
break;
- case PROP_AUTH_MAC:
- g_value_set_string (value, priv->auth_mac);
- break;
- case PROP_AUTH_BTID:
- g_value_set_string (value, priv->auth_btid);
- break;
default:
param_name = g_param_spec_get_name (pspec);
@@ -494,7 +484,11 @@ gabble_connection_set_property (GObject *object,
break;
case PROP_RESOURCE:
g_free (priv->resource);
- priv->resource = g_value_dup_string (value);
+ if (priv->randomize_resource)
+ priv->resource = g_strdup_printf ("%s.%u", g_value_get_string (value),
+ g_random_int_range(1000000, 9999999));
+ else
+ priv->resource = g_value_dup_string (value);
break;
case PROP_PRIORITY:
priv->priority = CLAMP (g_value_get_int (value), G_MININT8, G_MAXINT8);
@@ -513,18 +507,10 @@ gabble_connection_set_property (GObject *object,
case PROP_IGNORE_SSL_ERRORS:
priv->ignore_ssl_errors = g_value_get_boolean (value);
break;
- case PROP_ALIAS:
+ case PROP_ALIAS:
g_free (priv->alias);
priv->alias = g_value_dup_string (value);
break;
- case PROP_AUTH_MAC:
- g_free (priv->auth_mac);
- priv->auth_mac = g_value_dup_string (value);
- break;
- case PROP_AUTH_BTID:
- g_free (priv->auth_btid);
- priv->auth_btid = g_value_dup_string (value);
- break;
default:
param_name = g_param_spec_get_name (pspec);
@@ -789,24 +775,6 @@ gabble_connection_class_init (GabbleConnectionClass *gabble_connection_class)
G_PARAM_STATIC_BLURB);
g_object_class_install_property (object_class, PROP_ALIAS, param_spec);
- param_spec = g_param_spec_string ("auth-mac",
- "MAC for authorization",
- "MAC for authorization",
- NULL,
- G_PARAM_READWRITE |
- G_PARAM_STATIC_NAME |
- G_PARAM_STATIC_BLURB);
- g_object_class_install_property (object_class, PROP_AUTH_MAC, param_spec);
-
- param_spec = g_param_spec_string ("auth-btid",
- "BTID for authorization",
- "BTID for authorization",
- NULL,
- G_PARAM_READWRITE |
- G_PARAM_STATIC_NAME |
- G_PARAM_STATIC_BLURB);
- g_object_class_install_property (object_class, PROP_AUTH_BTID, param_spec);
-
/* signal definitions */
signals[ALIASES_CHANGED] =
@@ -2816,6 +2784,9 @@ connection_disco_cb (GabbleDisco *disco,
DEBUG ("set features flags to %d", conn->features);
}
+ /* go go gadget on-line */
+ connection_status_change (conn, TP_CONN_STATUS_CONNECTED, TP_CONN_STATUS_REASON_REQUESTED);
+
/* send presence to the server to indicate availability */
if (!signal_own_presence (conn, &error))
{
@@ -2823,9 +2794,6 @@ connection_disco_cb (GabbleDisco *disco,
goto ERROR;
}
- /* go go gadget on-line */
- connection_status_change (conn, TP_CONN_STATUS_CONNECTED, TP_CONN_STATUS_REASON_REQUESTED);
-
if (conn->features & GABBLE_CONNECTION_FEATURES_GOOGLE_JINGLE_INFO)
{
jingle_info_discover_servers (conn);