OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/evolution-data-server?expand=0&rev=28
This commit is contained in:
parent
323e623459
commit
f9899d36ff
@ -1,18 +0,0 @@
|
||||
Fixes crash on some attachments in GroupWise on x86_64 caused by stack corruption.
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=522389
|
||||
|
||||
e-gw-connection.c: In function 'e_gw_connection_get_attachment':
|
||||
e-gw-connection.c:2649: warning: passing argument 2 of 'g_base64_decode' from incompatible pointer type
|
||||
|
||||
================================================================================
|
||||
--- servers/groupwise/e-gw-connection.c
|
||||
+++ servers/groupwise/e-gw-connection.c
|
||||
@@ -2645,7 +2645,7 @@
|
||||
}
|
||||
|
||||
if (buffer && buf_length) {
|
||||
- int len = atoi (buf_length) ;
|
||||
+ gsize len = atoi (buf_length) ;
|
||||
*attachment = g_base64_decode (buffer,&len) ;
|
||||
*attach_length = len ;
|
||||
}
|
@ -1,7 +1,243 @@
|
||||
=== added file 'libedataserver/e-proxy.c'
|
||||
--- libedataserver/e-proxy.c 1970-01-01 00:00:00 +0000
|
||||
+++ libedataserver/e-proxy.c 2007-12-18 17:02:13 +0000
|
||||
@@ -0,0 +1,647 @@
|
||||
Index: servers/exchange/lib/e2k-context.c
|
||||
===================================================================
|
||||
--- servers/exchange/lib/e2k-context.c (revision 8580)
|
||||
+++ servers/exchange/lib/e2k-context.c (revision 8581)
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "e2k-utils.h"
|
||||
#include "e2k-xml-utils.h"
|
||||
|
||||
+#include <libedataserver/e-proxy.h>
|
||||
#include <libsoup/soup.h>
|
||||
#include <libxml/parser.h>
|
||||
#include <libxml/tree.h>
|
||||
@@ -98,6 +99,7 @@
|
||||
/* Forms-based authentication */
|
||||
char *cookie;
|
||||
gboolean cookie_verified;
|
||||
+ EProxy* proxy;
|
||||
};
|
||||
|
||||
/* For operations with progress */
|
||||
@@ -107,6 +109,9 @@
|
||||
/* For soup sync session timeout */
|
||||
#define E2K_SOUP_SESSION_TIMEOUT 30
|
||||
|
||||
+/* Soup session proxy-uri property */
|
||||
+#define SOUP_SESSION_PROXY_URI "proxy-uri"
|
||||
+
|
||||
#ifdef E2K_DEBUG
|
||||
char *e2k_debug;
|
||||
int e2k_debug_level;
|
||||
@@ -124,8 +129,33 @@
|
||||
static gboolean do_notification (GIOChannel *source, GIOCondition condition, gpointer data);
|
||||
|
||||
static void setup_message (SoupSession *session, SoupMessage *msg, SoupSocket *socket, gpointer user_data);
|
||||
+static void proxy_settings_changed (EProxy *proxy, gpointer user_data);
|
||||
|
||||
+
|
||||
static void
|
||||
+proxy_settings_changed (EProxy *proxy, gpointer user_data)
|
||||
+{
|
||||
+ SoupURI *proxy_uri = NULL;
|
||||
+ E2kContext* ctx = (E2kContext *)user_data;
|
||||
+ if (!ctx || !ctx->priv ||
|
||||
+ (!ctx->priv->session && !ctx->priv->async_session) ||
|
||||
+ (!ctx->priv->owa_uri))
|
||||
+ return;
|
||||
+
|
||||
+ if (!e_proxy_require_proxy_for_uri (proxy, ctx->priv->owa_uri))
|
||||
+ proxy_uri = NULL;
|
||||
+ else
|
||||
+ proxy_uri = e_proxy_peek_uri (proxy);
|
||||
+
|
||||
+ if (ctx->priv->session)
|
||||
+ g_object_set (ctx->priv->session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+ if (ctx->priv->async_session)
|
||||
+ g_object_set (ctx->priv->async_session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
init (GObject *object)
|
||||
{
|
||||
E2kContext *ctx = E2K_CONTEXT (object);
|
||||
@@ -135,6 +165,9 @@
|
||||
g_hash_table_new (g_str_hash, g_str_equal);
|
||||
ctx->priv->subscriptions_by_uri =
|
||||
g_hash_table_new (g_str_hash, g_str_equal);
|
||||
+ ctx->priv->proxy = e_proxy_new ();
|
||||
+ e_proxy_setup_proxy (ctx->priv->proxy);
|
||||
+ g_signal_connect (ctx->priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), ctx);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -182,8 +215,13 @@
|
||||
g_free (ctx->priv->cookie);
|
||||
g_free (ctx->priv->notification_uri);
|
||||
|
||||
+ if (ctx->priv->proxy) {
|
||||
+ g_object_unref (ctx->priv->proxy);
|
||||
+ ctx->priv->proxy = NULL;
|
||||
+ }
|
||||
g_free (ctx->priv);
|
||||
ctx->priv = NULL;
|
||||
+
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
@@ -361,6 +399,7 @@
|
||||
const char *password)
|
||||
{
|
||||
guint timeout = E2K_SOUP_SESSION_TIMEOUT;
|
||||
+ SoupURI* uri = NULL;
|
||||
#ifdef E2K_DEBUG
|
||||
SoupLogger *logger;
|
||||
SoupLoggerLogLevel level;
|
||||
@@ -395,9 +434,14 @@
|
||||
if (g_getenv ("SOUP_SESSION_TIMEOUT"))
|
||||
timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
|
||||
|
||||
+ /* Check do we need a proxy to contact the server? */
|
||||
+ if (e_proxy_require_proxy_for_uri (ctx->priv->proxy, ctx->priv->owa_uri))
|
||||
+ uri = e_proxy_peek_uri (ctx->priv->proxy);
|
||||
+
|
||||
ctx->priv->session = soup_session_sync_new_with_options (
|
||||
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
|
||||
SOUP_SESSION_TIMEOUT, timeout,
|
||||
+ SOUP_SESSION_PROXY_URI, uri,
|
||||
NULL);
|
||||
g_signal_connect (ctx->priv->session, "authenticate",
|
||||
G_CALLBACK (session_authenticate), ctx);
|
||||
@@ -406,7 +450,7 @@
|
||||
|
||||
ctx->priv->async_session = soup_session_async_new_with_options (
|
||||
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
|
||||
- NULL);
|
||||
+ SOUP_SESSION_PROXY_URI, uri, NULL);
|
||||
g_signal_connect (ctx->priv->async_session, "authenticate",
|
||||
G_CALLBACK (session_authenticate), ctx);
|
||||
g_signal_connect (ctx->priv->async_session, "request_started",
|
||||
Index: servers/groupwise/Makefile.am
|
||||
===================================================================
|
||||
--- servers/groupwise/Makefile.am (revision 8580)
|
||||
+++ servers/groupwise/Makefile.am (revision 8581)
|
||||
@@ -15,9 +15,10 @@
|
||||
$(E_DATA_SERVER_LIBS)
|
||||
|
||||
soap_test_SOURCES = soap-test.c
|
||||
-soap_test_LDADD = \
|
||||
- $(SOUP_LIBS) \
|
||||
- libegroupwise-1.2.la \
|
||||
+soap_test_LDADD = \
|
||||
+ $(top_builddir)/libedataserver/libedataserver-1.2.la \
|
||||
+ $(SOUP_LIBS) \
|
||||
+ libegroupwise-1.2.la \
|
||||
$(E_DATA_SERVER_LIBS)
|
||||
|
||||
build-timestamp.h : $(top_builddir)/config.h
|
||||
Index: servers/groupwise/e-gw-connection.c
|
||||
===================================================================
|
||||
--- servers/groupwise/e-gw-connection.c (revision 8580)
|
||||
+++ servers/groupwise/e-gw-connection.c (revision 8581)
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <glib/gi18n-lib.h>
|
||||
+#include <libedataserver/e-proxy.h>
|
||||
#include <libsoup/soup.h>
|
||||
#include "soup-soap-message.h"
|
||||
#include "e-gw-connection.h"
|
||||
@@ -37,6 +38,9 @@
|
||||
/* For soup sync session timeout */
|
||||
#define GW_SOUP_SESSION_TIMEOUT 30
|
||||
|
||||
+/* Soup session proxy-uri property */
|
||||
+#define SOUP_SESSION_PROXY_URI "proxy-uri"
|
||||
+
|
||||
static GObjectClass *parent_class = NULL;
|
||||
static GHashTable *loaded_connections_permissions = NULL;
|
||||
|
||||
@@ -57,8 +61,37 @@
|
||||
GList *book_list;
|
||||
EGwSendOptions *opts;
|
||||
GMutex *reauth_mutex;
|
||||
+ EProxy *proxy;
|
||||
};
|
||||
|
||||
+static void
|
||||
+update_soup_session_proxy_settings (EProxy *proxy, SoupSession* session,
|
||||
+ const char* uri)
|
||||
+{
|
||||
+ SoupURI *proxy_uri = NULL;
|
||||
+
|
||||
+ if (!session || !uri || !proxy)
|
||||
+ return;
|
||||
+
|
||||
+ if (e_proxy_require_proxy_for_uri (proxy, uri))
|
||||
+ proxy_uri = e_proxy_peek_uri (proxy);
|
||||
+
|
||||
+ g_object_set (session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+proxy_settings_changed (EProxy *proxy, gpointer user_data)
|
||||
+{
|
||||
+ EGwConnection* conn = (EGwConnection *)user_data;
|
||||
+ if (!conn || !conn->priv || !conn->priv->soup_session)
|
||||
+ return;
|
||||
+
|
||||
+ update_soup_session_proxy_settings (proxy,
|
||||
+ conn->priv->soup_session,
|
||||
+ conn->priv->uri);
|
||||
+}
|
||||
+
|
||||
static EGwConnectionStatus
|
||||
reauthenticate (EGwConnection *cnc)
|
||||
{
|
||||
@@ -342,6 +375,11 @@
|
||||
g_free (priv->server_time) ;
|
||||
priv->server_time = NULL ;
|
||||
}
|
||||
+
|
||||
+ if (priv->proxy) {
|
||||
+ g_object_unref (priv->proxy);
|
||||
+ priv->proxy = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (parent_class->dispose)
|
||||
@@ -393,6 +431,11 @@
|
||||
if (g_getenv ("SOUP_SESSION_TIMEOUT"))
|
||||
timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
|
||||
|
||||
+ /* Initialize proxy settings */
|
||||
+ priv->proxy = e_proxy_new ();
|
||||
+ e_proxy_setup_proxy (priv->proxy);
|
||||
+ g_signal_connect (priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), cnc);
|
||||
+
|
||||
/* create the SoupSession for this connection */
|
||||
priv->soup_session = soup_session_sync_new_with_options (SOUP_SESSION_TIMEOUT, timeout, NULL);
|
||||
priv->reauth_mutex = g_mutex_new ();
|
||||
@@ -491,6 +534,12 @@
|
||||
/* not found, so create a new connection */
|
||||
cnc = g_object_new (E_TYPE_GW_CONNECTION, NULL);
|
||||
|
||||
+ /* Set proxy details for the Soup session before any
|
||||
+ communication. */
|
||||
+ update_soup_session_proxy_settings (cnc->priv->proxy,
|
||||
+ cnc->priv->soup_session,
|
||||
+ uri);
|
||||
+
|
||||
msg = form_login_request (uri, username, password);
|
||||
|
||||
/* send message to server */
|
||||
Index: libedataserver/e-proxy.c
|
||||
===================================================================
|
||||
--- libedataserver/e-proxy.c (revision 0)
|
||||
+++ libedataserver/e-proxy.c (revision 8581)
|
||||
@@ -0,0 +1,649 @@
|
||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
+/*
|
||||
+ * Authors: Jeffrey Stedfast <fejj@ximian.com>
|
||||
@ -48,20 +284,22 @@
|
||||
+#define d(x)
|
||||
+
|
||||
+/* GConf paths and keys */
|
||||
+#define PATH_GCONF_GNOME_VFS "/system/http_proxy"
|
||||
+#define KEY_GCONF_HTTP_PROXY_PORT (PATH_GCONF_GNOME_VFS "/" "port")
|
||||
+#define KEY_GCONF_HTTP_PROXY_HOST (PATH_GCONF_GNOME_VFS "/" "host")
|
||||
+#define PATH_GCONF_NETWORK_CONFIG "/apps/evolution/shell/network_config"
|
||||
+#define KEY_GCONF_HTTP_PROXY_PORT (PATH_GCONF_NETWORK_CONFIG "/" "http_port")
|
||||
+#define KEY_GCONF_HTTP_PROXY_HOST (PATH_GCONF_NETWORK_CONFIG "/" "http_host")
|
||||
+#define KEY_GCONF_HTTPS_PROXY_PORT (PATH_GCONF_NETWORK_CONFIG "/" "secure_port")
|
||||
+#define KEY_GCONF_HTTPS_PROXY_HOST (PATH_GCONF_NETWORK_CONFIG "/" "secure_host")
|
||||
+#define KEY_GCONF_SOCKS_PROXY_PORT (PATH_GCONF_NETWORK_CONFIG "/" "socks_port")
|
||||
+#define KEY_GCONF_SOCKS_PROXY_HOST (PATH_GCONF_NETWORK_CONFIG "/" "socks_host")
|
||||
+#define KEY_GCONF_USE_HTTP_PROXY (PATH_GCONF_NETWORK_CONFIG "/" "use_http_proxy")
|
||||
+#define KEY_GCONF_HTTP_AUTH_USER (PATH_GCONF_NETWORK_CONFIG "/" "authentication_user")
|
||||
+#define KEY_GCONF_HTTP_AUTH_PW (PATH_GCONF_NETWORK_CONFIG "/" "authentication_password")
|
||||
+#define KEY_GCONF_HTTP_USE_AUTH (PATH_GCONF_NETWORK_CONFIG "/" "use_authentication")
|
||||
+
|
||||
+#define KEY_GCONF_USE_HTTP_PROXY (PATH_GCONF_GNOME_VFS "/" "use_http_proxy")
|
||||
+
|
||||
+#define KEY_GCONF_HTTP_AUTH_USER (PATH_GCONF_GNOME_VFS "/" "authentication_user")
|
||||
+#define KEY_GCONF_HTTP_AUTH_PW (PATH_GCONF_GNOME_VFS "/" "authentication_password")
|
||||
+#define KEY_GCONF_HTTP_USE_AUTH (PATH_GCONF_GNOME_VFS "/" "use_authentication")
|
||||
+
|
||||
+#define KEY_GCONF_HTTP_PROXY_IGNORE_HOSTS (PATH_GCONF_GNOME_VFS "/" "ignore_hosts")
|
||||
+#define KEY_GCONF_HTTP_PROXY_IGNORE_HOSTS (PATH_GCONF_NETWORK_CONFIG "/" "ignore_hosts")
|
||||
+
|
||||
+struct _EProxyPrivate {
|
||||
+ SoupUri* uri;
|
||||
+ SoupURI* uri;
|
||||
+ guint notify_id; /* conxn id of gconf_client_notify_add */
|
||||
+ GSList* ign_hosts; /* List of hostnames. (Strings) */
|
||||
+ GSList* ign_addrs; /* List of hostaddrs. (ProxyHostAddrs) */
|
||||
@ -231,7 +469,7 @@
|
||||
+ guint status;
|
||||
+
|
||||
+ addr = soup_address_new (host, 0);
|
||||
+ status = soup_address_resolve_sync (addr);
|
||||
+ status = soup_address_resolve_sync (addr, NULL);
|
||||
+ if (status == SOUP_STATUS_OK) {
|
||||
+ gint addr_len;
|
||||
+ struct sockaddr* s_addr = NULL;
|
||||
@ -435,7 +673,7 @@
|
||||
+ }
|
||||
+
|
||||
+ addr = soup_address_new (hostname, 0);
|
||||
+ status = soup_address_resolve_sync (addr);
|
||||
+ status = soup_address_resolve_sync (addr, NULL);
|
||||
+ if (status == SOUP_STATUS_OK) {
|
||||
+ gint addr_len;
|
||||
+ struct sockaddr* s_addr = NULL;
|
||||
@ -594,7 +832,7 @@
|
||||
+{
|
||||
+ GConfClient *client;
|
||||
+
|
||||
+ /* We get the gnome-vfs proxy keys here
|
||||
+ /* We get the evolution-shell proxy keys here
|
||||
+ set soup up to use the proxy,
|
||||
+ and listen to any changes */
|
||||
+
|
||||
@ -604,12 +842,12 @@
|
||||
+ if (!proxy || !proxy->priv)
|
||||
+ return;
|
||||
+
|
||||
+ /* Listen to the changes in the gnome-vfs path */
|
||||
+ gconf_client_add_dir (client, PATH_GCONF_GNOME_VFS,
|
||||
+ /* Listen to the changes in the evolution-shell path */
|
||||
+ gconf_client_add_dir (client, PATH_GCONF_NETWORK_CONFIG,
|
||||
+ GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
|
||||
+
|
||||
+ if (proxy->priv->notify_id == 0)
|
||||
+ proxy->priv->notify_id = gconf_client_notify_add (client, PATH_GCONF_GNOME_VFS,
|
||||
+ proxy->priv->notify_id = gconf_client_notify_add (client, PATH_GCONF_NETWORK_CONFIG,
|
||||
+ ep_setting_changed, (gpointer)proxy,
|
||||
+ NULL, NULL);
|
||||
+
|
||||
@ -618,7 +856,7 @@
|
||||
+ g_object_unref (client);
|
||||
+}
|
||||
+
|
||||
+SoupUri*
|
||||
+SoupURI*
|
||||
+e_proxy_peek_uri (EProxy* proxy)
|
||||
+{
|
||||
+ if (!proxy || !proxy->priv)
|
||||
@ -630,7 +868,7 @@
|
||||
+gboolean
|
||||
+e_proxy_require_proxy_for_uri (EProxy* proxy, const char* uri)
|
||||
+{
|
||||
+ SoupUri *srv_uri = NULL;
|
||||
+ SoupURI *srv_uri = NULL;
|
||||
+ gboolean ret = FALSE;
|
||||
+
|
||||
+ if (!uri || !proxy || !proxy->priv)
|
||||
@ -649,10 +887,10 @@
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
|
||||
=== added file 'libedataserver/e-proxy.h'
|
||||
--- libedataserver/e-proxy.h 1970-01-01 00:00:00 +0000
|
||||
+++ libedataserver/e-proxy.h 2007-12-18 17:02:13 +0000
|
||||
Index: libedataserver/e-proxy.h
|
||||
===================================================================
|
||||
--- libedataserver/e-proxy.h (revision 0)
|
||||
+++ libedataserver/e-proxy.h (revision 8581)
|
||||
@@ -0,0 +1,63 @@
|
||||
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
+/*
|
||||
@ -708,7 +946,7 @@
|
||||
+};
|
||||
+
|
||||
+EProxy* e_proxy_new (void);
|
||||
+SoupUri* e_proxy_peek_uri (EProxy* proxy);
|
||||
+SoupURI* e_proxy_peek_uri (EProxy* proxy);
|
||||
+void e_proxy_setup_proxy (EProxy* proxy);
|
||||
+GType e_proxy_get_type (void);
|
||||
+gboolean e_proxy_require_proxy_for_uri (EProxy *proxy,
|
||||
@ -717,10 +955,10 @@
|
||||
+G_END_DECLS
|
||||
+
|
||||
+#endif
|
||||
|
||||
=== modified file 'libedataserver/Makefile.am'
|
||||
--- libedataserver/Makefile.am 2007-12-18 16:36:30 +0000
|
||||
+++ libedataserver/Makefile.am 2007-12-18 17:02:13 +0000
|
||||
Index: libedataserver/Makefile.am
|
||||
===================================================================
|
||||
--- libedataserver/Makefile.am (revision 8580)
|
||||
+++ libedataserver/Makefile.am (revision 8581)
|
||||
@@ -7,7 +7,8 @@
|
||||
-DE_DATA_SERVER_EXTENSIONDIR=\"$(extensiondir)\" \
|
||||
-DE_DATA_SERVER_IMAGESDIR=\"$(imagesdir)\" \
|
||||
@ -757,240 +995,3 @@
|
||||
e-sexp.h \
|
||||
e-source-group.h \
|
||||
e-source-list.h \
|
||||
|
||||
=== modified file 'servers/exchange/lib/e2k-context.c'
|
||||
--- servers/exchange/lib/e2k-context.c 2007-12-18 16:36:30 +0000
|
||||
+++ servers/exchange/lib/e2k-context.c 2007-12-18 17:02:13 +0000
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "e2k-utils.h"
|
||||
#include "e2k-xml-utils.h"
|
||||
|
||||
+#include <libedataserver/e-proxy.h>
|
||||
#include <libsoup/soup-address.h>
|
||||
#include <libsoup/soup-message-filter.h>
|
||||
#include <libsoup/soup-session-async.h>
|
||||
@@ -103,6 +104,7 @@
|
||||
/* Forms-based authentication */
|
||||
char *cookie;
|
||||
gboolean cookie_verified;
|
||||
+ EProxy* proxy;
|
||||
};
|
||||
|
||||
/* For operations with progress */
|
||||
@@ -112,6 +114,9 @@
|
||||
/* For soup sync session timeout */
|
||||
#define E2K_SOUP_SESSION_TIMEOUT 30
|
||||
|
||||
+/* Soup session proxy-uri property */
|
||||
+#define SOUP_SESSION_PROXY_URI "proxy-uri"
|
||||
+
|
||||
#ifdef E2K_DEBUG
|
||||
char *e2k_debug;
|
||||
int e2k_debug_level;
|
||||
@@ -122,6 +127,31 @@
|
||||
static gboolean do_notification (GIOChannel *source, GIOCondition condition, gpointer data);
|
||||
|
||||
static void setup_message (SoupMessageFilter *filter, SoupMessage *msg);
|
||||
+static void proxy_settings_changed (EProxy *proxy, gpointer user_data);
|
||||
+
|
||||
+
|
||||
+static void
|
||||
+proxy_settings_changed (EProxy *proxy, gpointer user_data)
|
||||
+{
|
||||
+ SoupUri *proxy_uri = NULL;
|
||||
+ E2kContext* ctx = (E2kContext *)user_data;
|
||||
+ if (!ctx || !ctx->priv ||
|
||||
+ (!ctx->priv->session && !ctx->priv->async_session) ||
|
||||
+ (!ctx->priv->owa_uri))
|
||||
+ return;
|
||||
+
|
||||
+ if (!e_proxy_require_proxy_for_uri (proxy, ctx->priv->owa_uri))
|
||||
+ proxy_uri = NULL;
|
||||
+ else
|
||||
+ proxy_uri = e_proxy_peek_uri (proxy);
|
||||
+
|
||||
+ if (ctx->priv->session)
|
||||
+ g_object_set (ctx->priv->session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+ if (ctx->priv->async_session)
|
||||
+ g_object_set (ctx->priv->async_session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+}
|
||||
|
||||
static void
|
||||
init (GObject *object)
|
||||
@@ -133,6 +163,9 @@
|
||||
g_hash_table_new (g_str_hash, g_str_equal);
|
||||
ctx->priv->subscriptions_by_uri =
|
||||
g_hash_table_new (g_str_hash, g_str_equal);
|
||||
+ ctx->priv->proxy = e_proxy_new ();
|
||||
+ e_proxy_setup_proxy (ctx->priv->proxy);
|
||||
+ g_signal_connect (ctx->priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), ctx);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -179,8 +212,13 @@
|
||||
|
||||
g_free (ctx->priv->cookie);
|
||||
|
||||
+ if (ctx->priv->proxy) {
|
||||
+ g_object_unref (ctx->priv->proxy);
|
||||
+ ctx->priv->proxy = NULL;
|
||||
+ }
|
||||
g_free (ctx->priv);
|
||||
ctx->priv = NULL;
|
||||
+
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
@@ -360,6 +398,7 @@
|
||||
const char *password)
|
||||
{
|
||||
guint timeout = E2K_SOUP_SESSION_TIMEOUT;
|
||||
+ SoupUri* uri = NULL;
|
||||
|
||||
g_return_if_fail (E2K_IS_CONTEXT (ctx));
|
||||
|
||||
@@ -390,9 +429,15 @@
|
||||
if (g_getenv ("SOUP_SESSION_TIMEOUT"))
|
||||
timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
|
||||
|
||||
+ /* Check do we need a proxy to contact the server? */
|
||||
+ if (e_proxy_require_proxy_for_uri (ctx->priv->proxy, ctx->priv->owa_uri))
|
||||
+ uri = e_proxy_peek_uri (ctx->priv->proxy);
|
||||
+
|
||||
+
|
||||
ctx->priv->session = soup_session_sync_new_with_options (
|
||||
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
|
||||
SOUP_SESSION_TIMEOUT, timeout,
|
||||
+ SOUP_SESSION_PROXY_URI, uri,
|
||||
NULL);
|
||||
g_signal_connect (ctx->priv->session, "authenticate",
|
||||
G_CALLBACK (session_authenticate), ctx);
|
||||
@@ -401,7 +446,7 @@
|
||||
|
||||
ctx->priv->async_session = soup_session_async_new_with_options (
|
||||
SOUP_SESSION_USE_NTLM, !authmech || !strcmp (authmech, "NTLM"),
|
||||
- NULL);
|
||||
+ SOUP_SESSION_PROXY_URI, uri, NULL);
|
||||
g_signal_connect (ctx->priv->async_session, "authenticate",
|
||||
G_CALLBACK (session_authenticate), ctx);
|
||||
soup_session_add_filter (ctx->priv->async_session,
|
||||
|
||||
=== modified file 'servers/groupwise/Makefile.am'
|
||||
--- servers/groupwise/Makefile.am 2007-12-18 16:36:30 +0000
|
||||
+++ servers/groupwise/Makefile.am 2007-12-18 17:02:13 +0000
|
||||
@@ -15,9 +15,10 @@
|
||||
$(E_DATA_SERVER_LIBS)
|
||||
|
||||
soap_test_SOURCES = soap-test.c
|
||||
-soap_test_LDADD = \
|
||||
- $(SOUP_LIBS) \
|
||||
- libegroupwise-1.2.la \
|
||||
+soap_test_LDADD = \
|
||||
+ $(top_builddir)/libedataserver/libedataserver-1.2.la \
|
||||
+ $(SOUP_LIBS) \
|
||||
+ libegroupwise-1.2.la \
|
||||
$(E_DATA_SERVER_LIBS)
|
||||
|
||||
build-timestamp.h : $(top_builddir)/config.h
|
||||
|
||||
=== modified file 'servers/groupwise/e-gw-connection.c'
|
||||
--- servers/groupwise/e-gw-connection.c 2007-12-18 16:36:30 +0000
|
||||
+++ servers/groupwise/e-gw-connection.c 2007-12-18 17:02:13 +0000
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <glib/gi18n-lib.h>
|
||||
+#include <libedataserver/e-proxy.h>
|
||||
#include <libsoup/soup-session-sync.h>
|
||||
#include <libsoup/soup-soap-message.h>
|
||||
#include <libsoup/soup-misc.h>
|
||||
@@ -38,6 +39,9 @@
|
||||
/* For soup sync session timeout */
|
||||
#define GW_SOUP_SESSION_TIMEOUT 30
|
||||
|
||||
+/* Soup session proxy-uri property */
|
||||
+#define SOUP_SESSION_PROXY_URI "proxy-uri"
|
||||
+
|
||||
static GObjectClass *parent_class = NULL;
|
||||
static GHashTable *loaded_connections_permissions = NULL;
|
||||
|
||||
@@ -58,8 +62,37 @@
|
||||
GList *book_list;
|
||||
EGwSendOptions *opts;
|
||||
GMutex *reauth_mutex;
|
||||
+ EProxy *proxy;
|
||||
};
|
||||
|
||||
+static void
|
||||
+update_soup_session_proxy_settings (EProxy *proxy, SoupSession* session,
|
||||
+ const char* uri)
|
||||
+{
|
||||
+ SoupUri *proxy_uri = NULL;
|
||||
+
|
||||
+ if (!session || !uri || !proxy)
|
||||
+ return;
|
||||
+
|
||||
+ if (e_proxy_require_proxy_for_uri (proxy, uri))
|
||||
+ proxy_uri = e_proxy_peek_uri (proxy);
|
||||
+
|
||||
+ g_object_set (session, SOUP_SESSION_PROXY_URI,
|
||||
+ proxy_uri, NULL);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+proxy_settings_changed (EProxy *proxy, gpointer user_data)
|
||||
+{
|
||||
+ EGwConnection* conn = (EGwConnection *)user_data;
|
||||
+ if (!conn || !conn->priv || !conn->priv->soup_session)
|
||||
+ return;
|
||||
+
|
||||
+ update_soup_session_proxy_settings (proxy,
|
||||
+ conn->priv->soup_session,
|
||||
+ conn->priv->uri);
|
||||
+}
|
||||
+
|
||||
static EGwConnectionStatus
|
||||
reauthenticate (EGwConnection *cnc)
|
||||
{
|
||||
@@ -343,6 +376,11 @@
|
||||
g_free (priv->server_time) ;
|
||||
priv->server_time = NULL ;
|
||||
}
|
||||
+
|
||||
+ if (priv->proxy) {
|
||||
+ g_object_unref (priv->proxy);
|
||||
+ priv->proxy = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (parent_class->dispose)
|
||||
@@ -394,6 +432,11 @@
|
||||
if (g_getenv ("SOUP_SESSION_TIMEOUT"))
|
||||
timeout = atoi (g_getenv ("SOUP_SESSION_TIMEOUT"));
|
||||
|
||||
+ /* Initialize proxy settings */
|
||||
+ priv->proxy = e_proxy_new ();
|
||||
+ e_proxy_setup_proxy (priv->proxy);
|
||||
+ g_signal_connect (priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), cnc);
|
||||
+
|
||||
/* create the SoupSession for this connection */
|
||||
priv->soup_session = soup_session_sync_new_with_options (SOUP_SESSION_TIMEOUT, timeout, NULL);
|
||||
priv->reauth_mutex = g_mutex_new ();
|
||||
@@ -477,7 +520,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
-
|
||||
+ /* Set proxy details for the Soup session before any
|
||||
+ communication.
|
||||
+ */
|
||||
+ update_soup_session_proxy_settings (cnc->priv->proxy,
|
||||
+ cnc->priv->soup_session,
|
||||
+ uri);
|
||||
+
|
||||
/* not found, so create a new connection */
|
||||
cnc = g_object_new (E_TYPE_GW_CONNECTION, NULL);
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ff1b3540234296e1ffe52ddde48b67d93a261ee06f2eef865a47c4fbcfdc8724
|
||||
size 7575575
|
3
evolution-data-server-2.22.1.tar.bz2
Normal file
3
evolution-data-server-2.22.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c68cdbfa960068adb76bd3e14affcc7f919435b4b17e12306e641f2a0aceed11
|
||||
size 7602166
|
@ -1,9 +1,29 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 10 17:00:29 CEST 2008 - maw@suse.de
|
||||
|
||||
- Update to version 2.22.1:
|
||||
+ Bugs fixed: bgo#524704, bgo#521015, bgo#520526, bgo#522433,
|
||||
bgo#525485, bgo#523528, bgo#372383, bgo#522389, bgo#500389,
|
||||
bgo#523023, bgo#494311, bgo#523126, and bgo#303067
|
||||
+ Updated translations
|
||||
- Drop bgo-522389-e-gw-connection-get-attachment-corruption.patch
|
||||
- Annotate bnc-188523-eds-fix-authenticated-proxy-support.diff,
|
||||
and fix other annotations' formatting.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 10 12:54:45 CEST 2008 - ro@suse.de
|
||||
|
||||
- added baselibs.conf file to build xxbit packages
|
||||
for multilib support
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 9 11:34:40 CEST 2008 - msuman@suse.de
|
||||
|
||||
- Configurable proxy settings for Evolution (Varadhan)
|
||||
+ Added patch bnc-188523-eds-fix-authenticated-proxy-support.diff (bnc#188523)
|
||||
+ Removed patch bnc-174255-honour-system-proxy-settings.patch since
|
||||
added patch includes those changes as well.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 26 12:11:16 CET 2008 - sbrabec@suse.cz
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package evolution-data-server (Version 2.22.0)
|
||||
# spec file for package evolution-data-server (Version 2.22.1)
|
||||
#
|
||||
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
@ -17,30 +17,28 @@ License: GPL v2 or later
|
||||
Group: Development/Libraries/GNOME
|
||||
AutoReqProv: on
|
||||
Summary: Evolution Data Server
|
||||
Version: 2.22.0
|
||||
Release: 12
|
||||
Version: 2.22.1
|
||||
Release: 1
|
||||
Source0: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/2.21/%{name}-%{version}.tar.bz2
|
||||
Patch0: evolution-data-server-configure.patch
|
||||
# PATCH-FIX-UPSTREAM bnc-164367-gw-attachments-appts-throw-error.patch bnc164367 - Fix is in upstream svn.
|
||||
# PATCH-FIX-UPSTREAM bnc-164367-gw-attachments-appts-throw-error.patch bnc164367 -- Fix is in upstream svn.
|
||||
Patch3: bnc-164367-gw-attachments-appts-throw-error.patch
|
||||
# PATCH-NEEDS-REBASE: bnc-163982-system-hang-with-126-error-popups.patch
|
||||
Patch4: bnc-163982-system-hang-with-126-error-popups.patch
|
||||
# PATCH-FIX-UPSTREAM bnc-152070-eds-crash.patch bnc152070 - Fix is in upstream svn.
|
||||
# PATCH-FIX-UPSTREAM bnc-152070-eds-crash.patch bnc152070 -- Fix is in upstream svn.
|
||||
Patch5: bnc-152070-eds-crash.patch
|
||||
# PATCH-FIX-UPSTREAM bnc-174255-honour-system-proxy-settings.patch bnc174255 bgo517225 - Fix has been submitted to bgo
|
||||
Patch8: bnc-174255-honour-system-proxy-settings.patch
|
||||
# PATCH-FIX-UPSTREAM bnc-188523-eds-fix-authenticated-proxy-support.diff msuman@suse.de --
|
||||
Patch8: bnc-188523-eds-fix-authenticated-proxy-support.diff
|
||||
Patch10: eds-compiler-warning.patch
|
||||
# PATCH-FIX-UPSTREAM evolution-data-server-1.11.5-cert-auth-complete.patch bgo253574 - Fix has been submitted to bgo.
|
||||
# PATCH-FIX-UPSTREAM evolution-data-server-1.11.5-cert-auth-complete.patch bgo253574 -- Fix has been submitted to bgo.
|
||||
Patch11: evolution-data-server-1.11.5-cert-auth-complete.patch
|
||||
# PATCH-FIX-UPSTREAM bnc-304835-ex-crash-after-restart.patch bnc304835 bgo253574 - Fix has been submitted to bgo.
|
||||
# PATCH-FIX-UPSTREAM bnc-304835-ex-crash-after-restart.patch bnc304835 bgo253574 -- Fix has been submitted to bgo.
|
||||
Patch12: bnc-304835-ex-crash-after-restart.patch
|
||||
# PATCH-FIX-UPSTREAM: bnc-307861-calendar-auth.diff - bnc307861 bgo253574 - Fix has been submitted to bgo.
|
||||
# PATCH-FIX-UPSTREAM: bnc-307861-calendar-auth.diff - bnc307861 bgo253574 -- Fix has been submitted to bgo.
|
||||
Patch13: bnc-307861-calendar-auth.diff
|
||||
Patch14: evolution-data-server-abuild.patch
|
||||
# PATCH-FIX-UPSTREAM: bgo-522389-e-gw-connection-get-attachment-corruption.patch bgo522389 - Fix gw attachment crash on x86_64
|
||||
Patch15: bgo-522389-e-gw-connection-get-attachment-corruption.patch
|
||||
# Change patch below if we move away from /opt/gnome
|
||||
# PATCH-FIX-OPENSUSE libgnomeui-dep.patch - It avoids a build dependency on libgnomeui to speed up bootstrap
|
||||
# PATCH-FIX-OPENSUSE libgnomeui-dep.patch -- It avoids a build dependency on libgnomeui to speed up bootstrap
|
||||
Patch99: libgnomeui-dep.patch
|
||||
# The following has been reported upstream (with a patch) and should be
|
||||
# fixed in the next release:
|
||||
@ -102,13 +100,12 @@ documentation.
|
||||
%patch3
|
||||
#%patch4
|
||||
%patch5
|
||||
###%patch8
|
||||
%patch8
|
||||
%patch10
|
||||
###%patch11
|
||||
###%patch12
|
||||
%patch13
|
||||
%patch14 -p1
|
||||
%patch15
|
||||
%patch99
|
||||
|
||||
%build
|
||||
@ -167,9 +164,23 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_datadir}/gtk-doc/html/*
|
||||
|
||||
%changelog
|
||||
* Thu Apr 10 2008 maw@suse.de
|
||||
- Update to version 2.22.1:
|
||||
+ Bugs fixed: bgo#524704, bgo#521015, bgo#520526, bgo#522433,
|
||||
bgo#525485, bgo#523528, bgo#372383, bgo#522389, bgo#500389,
|
||||
bgo#523023, bgo#494311, bgo#523126, and bgo#303067
|
||||
+ Updated translations
|
||||
- Drop bgo-522389-e-gw-connection-get-attachment-corruption.patch
|
||||
- Annotate bnc-188523-eds-fix-authenticated-proxy-support.diff,
|
||||
and fix other annotations' formatting.
|
||||
* Thu Apr 10 2008 ro@suse.de
|
||||
- added baselibs.conf file to build xxbit packages
|
||||
for multilib support
|
||||
* Wed Apr 09 2008 msuman@suse.de
|
||||
- Configurable proxy settings for Evolution (Varadhan)
|
||||
+ Added patch bnc-188523-eds-fix-authenticated-proxy-support.diff (bnc#188523)
|
||||
+ Removed patch bnc-174255-honour-system-proxy-settings.patch since
|
||||
added patch includes those changes as well.
|
||||
* Wed Mar 26 2008 sbrabec@suse.cz
|
||||
- Fixed GroupWise attachment crash on x86_64 (bgo#522389).
|
||||
* Fri Mar 14 2008 maw@suse.de
|
||||
|
Loading…
Reference in New Issue
Block a user