gvfs r1106 - in trunk: . daemon
- From: danw svn gnome org
- To: svn-commits-list gnome org
- Subject: gvfs r1106 - in trunk: . daemon
- Date: Fri, 11 Jan 2008 20:07:49 +0000 (GMT)
Author: danw
Date: Fri Jan 11 20:07:49 2008
New Revision: 1106
URL: http://svn.gnome.org/viewvc/gvfs?rev=1106&view=rev
Log:
* daemon/gvfsbackendhttp.c (g_vfs_backend_http_finalize): cleanup
(g_vfs_backend_http_init): move session creation here. Don't
explicitly set ASYNC_CONTEXT to g_main_context_default() because
that trips up SoupInputStream.
(uri_for_filename): create a SoupUri corresponding to a filename.
In particular, "/" corresponds to mount_base, not the result of
combining mount_base with "/".
(try_open_for_read): use uri_for_filename, free the result.
Modified:
trunk/ChangeLog
trunk/daemon/gvfsbackendhttp.c
Modified: trunk/daemon/gvfsbackendhttp.c
==============================================================================
--- trunk/daemon/gvfsbackendhttp.c (original)
+++ trunk/daemon/gvfsbackendhttp.c Fri Jan 11 20:07:49 2008
@@ -70,6 +70,12 @@
backend = G_VFS_BACKEND_HTTP (object);
+ if (backend->mount_base)
+ soup_uri_free (backend->mount_base);
+
+ soup_session_abort (backend->session);
+ g_object_unref (backend->session);
+
if (G_OBJECT_CLASS (g_vfs_backend_http_parent_class)->finalize)
(*G_OBJECT_CLASS (g_vfs_backend_http_parent_class)->finalize) (object);
}
@@ -77,7 +83,9 @@
static void
g_vfs_backend_http_init (GVfsBackendHttp *backend)
{
- g_vfs_backend_set_user_visible (backend, FALSE);
+ g_vfs_backend_set_user_visible (G_VFS_BACKEND (backend), FALSE);
+
+ backend->session = soup_session_async_new ();
}
static gboolean
@@ -90,7 +98,7 @@
GVfsBackendHttp *op_backend;
const char *uri_str;
SoupUri *uri;
- GMountSpec *real_mount_spec;
+ GMountSpec *real_mount_spec;
op_backend = G_VFS_BACKEND_HTTP (backend);
@@ -116,9 +124,6 @@
op_backend->mount_base = uri;
- op_backend->session = soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT,
- g_main_context_default (),
- NULL);
g_vfs_job_succeeded (G_VFS_JOB (job));
return TRUE;
}
@@ -161,6 +166,28 @@
g_vfs_job_succeeded (job);
}
+static SoupUri *
+uri_for_filename (GVfsBackendHttp *op_backend, const char *filename)
+{
+ SoupUri *uri;
+ char *path;
+
+ uri = soup_uri_copy (op_backend->mount_base);
+
+ /* "/" means "whatever mount_base is" */
+ if (!strcmp (filename, "/"))
+ return uri;
+
+ /* Otherwise, we append filename to mount_base (which is assumed to
+ * be a directory in this case).
+ */
+ path = g_build_filename (uri->path, filename, NULL);
+ g_free (uri->path);
+ uri->path = path;
+
+ return uri;
+}
+
static gboolean
try_open_for_read (GVfsBackend *backend,
GVfsJobOpenForRead *job,
@@ -172,9 +199,10 @@
SoupMessage *msg;
op_backend = G_VFS_BACKEND_HTTP (backend);
- uri = soup_uri_new_with_base (op_backend->mount_base, filename);
+ uri = uri_for_filename (op_backend, filename);
msg = soup_message_new_from_uri (SOUP_METHOD_GET, uri);
+ soup_uri_free (uri);
soup_message_add_header (msg->request_headers, "User-Agent", "gvfs/" VERSION);
stream = soup_input_stream_new (op_backend->session, msg);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]