Ejemplo n.º 1
0
static void
handle_logout (DMAPConnection * connection,
	       guint status, GNode * structure, gpointer user_data)
{
	connection_disconnected (connection);

	/* is there any point handling errors here? */
	dmap_connection_state_done (connection, TRUE);
}
Ejemplo n.º 2
0
void
soup_session_connection_failed (SoupSession *session,
				SoupConnection *conn, guint status)
{
	SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session);
	SoupSessionHost *host;
	SoupMessageQueueItem *item;
	SoupMessage *msg;

	g_mutex_lock (priv->host_lock);
	host = g_hash_table_lookup (priv->conns, conn);
	g_mutex_unlock (priv->host_lock);
	if (!host)
		return;

	connection_disconnected (conn, session);

	if (host->connections) {
		/* Something went wrong this time, but we have at
		 * least one open connection to this host. So just
		 * leave the message in the queue so it can use that
		 * connection once it's free.
		 */
		return;
	}

	/* Assume that there's something wrong with the host, and
	 * cancel any other messages waiting for a connection to it,
	 * since they're out of luck.
	 */
	g_object_ref (session);
	for (item = soup_message_queue_first (priv->queue); item; item = soup_message_queue_next (priv->queue, item)) {
		msg = item->msg;
		if (get_host_for_message (session, msg) == host)
			soup_session_cancel_message (session, msg, status);
	}
	g_object_unref (session);
}