[maemo-commits] [maemo-commits] r8813 - projects/haf/branches/osso-gnome-vfs2/2-16-upstream-merge/debian/patches
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Dec 19 11:23:20 EET 2006
- Previous message: [maemo-commits] r8812 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop test
- Next message: [maemo-commits] r8814 - in projects/haf/branches/osso-gnome-vfs2/2.12.x/trunk: . dbus-daemon debian debian/patches
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: richard Date: 2006-12-19 11:23:19 +0200 (Tue, 19 Dec 2006) New Revision: 8813 Added: projects/haf/branches/osso-gnome-vfs2/2-16-upstream-merge/debian/patches/27-workaround-broken-http-servers.patch Log: Add patch for broken http servers. Added: projects/haf/branches/osso-gnome-vfs2/2-16-upstream-merge/debian/patches/27-workaround-broken-http-servers.patch =================================================================== --- projects/haf/branches/osso-gnome-vfs2/2-16-upstream-merge/debian/patches/27-workaround-broken-http-servers.patch 2006-12-19 09:14:14 UTC (rev 8812) +++ projects/haf/branches/osso-gnome-vfs2/2-16-upstream-merge/debian/patches/27-workaround-broken-http-servers.patch 2006-12-19 09:23:19 UTC (rev 8813) @@ -0,0 +1,81 @@ +Index: modules/http-neon-method.c +=================================================================== +--- modules/http-neon-method.c (revision 8808) ++++ modules/http-neon-method.c (working copy) +@@ -1819,6 +1819,41 @@ http_follow_redirect (HttpContext *conte + /* ************************************************************************** */ + /* Http operations */ + ++/* Sends a HEAD/GET request where we are not interested in any information ++ * except headers. Some broken servers send the content for HEAD requests, so we ++ * always try to read to get rid of that by closing the connection, and for the ++ * case where this is used with GET as fallback for HEAD, we are also not ++ * interested in the data. ++ */ ++static int ++dispatch_head_request (ne_request *req) ++{ ++ gboolean must_close = FALSE; ++ char buffer[1]; ++ size_t len; ++ int res; ++ ++ do { ++ res = ne_begin_request (req); ++ ++ if (NE_OK == res) { ++ len = ne_read_response_block (req, buffer, sizeof buffer); ++ must_close = (len > 0); ++ } ++ ++ if (NE_OK == res) { ++ res = ne_end_request (req); ++ } ++ } while (NE_RETRY == res); ++ ++ if (must_close) { ++ DEBUG_HTTP ("explictly closing connection"); ++ ne_close_connection (ne_get_session (req)); ++ } ++ ++ return res; ++} ++ + static GnomeVFSResult + http_get_file_info (HttpContext *context, GnomeVFSFileInfo *info) + { +@@ -1897,9 +1932,18 @@ http_get_file_info (HttpContext *context + + head_start: + req = ne_request_create (context->session, "HEAD", context->path); ++ res = dispatch_head_request (req); ++ result = resolve_result (res, req); + +- res = ne_request_dispatch (req); +- ++ if (res == NE_ERROR || result == GNOME_VFS_ERROR_NOT_SUPPORTED) { ++ /* Assume that there was a broken server... fallback to GET. */ ++ DEBUG_HTTP ("Fall back to GET request"); ++ ++ ne_request_destroy (req); ++ req = ne_request_create (context->session, "GET", context->path); ++ res = dispatch_head_request (req); ++ } ++ + if (res == NE_REDIRECT) { + ne_request_destroy (req); + req = NULL; +@@ -1930,13 +1974,6 @@ http_get_file_info (HttpContext *context + info->valid_fields |= GNOME_VFS_FILE_INFO_FIELDS_TYPE; + + std_headers_to_file_info (req, info); +- +- /* work-around for broken icecast server */ +- if (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE +- && ! g_ascii_strcasecmp (info->mime_type, "audio/mpeg")) { +- ne_close_connection (ne_get_session (req)); +- } +- + } + + ne_request_destroy (req);
- Previous message: [maemo-commits] r8812 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop test
- Next message: [maemo-commits] r8814 - in projects/haf/branches/osso-gnome-vfs2/2.12.x/trunk: . dbus-daemon debian debian/patches
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]