summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2020-11-28 23:55:51 -0500
committerGlenn Strauss <gstrauss@gluelogic.com>2020-11-29 12:20:00 -0500
commitae228cadb54ace607d497fec15ab9735f89851eb (patch)
tree904ff5d3fc0e21850e1ddcc94f443eb1d267291f
parent025f2d0dad30fb29a42a7fb0a7239a009a448ada (diff)
downloadlighttpd-git-ae228cadb54ace607d497fec15ab9735f89851eb.tar.gz
[mod_webdav] workaround for gvfs dir redir bug
workaround for gvfs dir redir bug fix for unhandled live properties (thx montvid) x-ref: "lighttpd webdav does not work with Nemo, Nautilus gvfs" https://redmine.lighttpd.net/boards/2/topics/9516
-rw-r--r--src/mod_webdav.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mod_webdav.c b/src/mod_webdav.c
index 6f5a543f..31d99f32 100644
--- a/src/mod_webdav.c
+++ b/src/mod_webdav.c
@@ -3812,6 +3812,7 @@ webdav_has_lock (request_st * const r,
chunk_buffer_release(cbdata.b);
return 0;
}
+ cbdata.size = 16;
cbdata.tokens =
realloc(cbdata.tokens, sizeof(*(cbdata.tokens)) * 16);
force_assert(cbdata.tokens); /*(see above limit)*/
@@ -3944,6 +3945,12 @@ mod_webdav_propfind (request_st * const r, const plugin_config * const pconf)
http_response_redirect_to_directory(r, 308);
return HANDLER_FINISHED;
}
+ if (vb && 0 == strncmp(vb->ptr, "gvfs/", sizeof("gvfs/")-1)) {
+ /* workaround gvfs bug */
+ /* (gvfs unable to open folder if not redirected) */
+ http_response_redirect_to_directory(r, 308);
+ return HANDLER_FINISHED;
+ }
/* set "Content-Location" instead of sending 308 redirect to dir */
if (!http_response_redirect_to_directory(r, 0))
return HANDLER_FINISHED;
@@ -4013,6 +4020,7 @@ mod_webdav_propfind (request_st * const r, const plugin_config * const pconf)
xmlFreeDoc(xml);
return HANDLER_FINISHED;
}
+ pb.proplist.size = 32;
pb.proplist.ptr =
realloc(pb.proplist.ptr, sizeof(*(pb.proplist.ptr)) * 32);
force_assert(pb.proplist.ptr); /*(see above limit)*/
@@ -4033,6 +4041,8 @@ mod_webdav_propfind (request_st * const r, const plugin_config * const pconf)
++list;
if (NULL != list->prop) {
if (cmd->name[0] == 'p') { /* "prop", not "include" */
+ pb.proplist.ptr[pb.proplist.used].ns = "";
+ pb.proplist.ptr[pb.proplist.used].nslen = 0;
pb.proplist.ptr[pb.proplist.used].name = NULL;
pb.proplist.ptr[pb.proplist.used].namelen =
list->pnum;
@@ -5173,6 +5183,12 @@ mod_webdav_proppatch (request_st * const r, const plugin_config * const pconf)
http_response_redirect_to_directory(r, 308);
return HANDLER_FINISHED;
}
+ if (vb && 0 == strncmp(vb->ptr, "gvfs/", sizeof("gvfs/")-1)) {
+ /* workaround gvfs bug */
+ /* (gvfs unable to open folder if not redirected) */
+ http_response_redirect_to_directory(r, 308);
+ return HANDLER_FINISHED;
+ }
/* set "Content-Location" instead of sending 308 redirect to dir */
if (!http_response_redirect_to_directory(r, 0))
return HANDLER_FINISHED;