diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2020-11-28 23:55:51 -0500 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2020-11-29 12:20:00 -0500 |
commit | ae228cadb54ace607d497fec15ab9735f89851eb (patch) | |
tree | 904ff5d3fc0e21850e1ddcc94f443eb1d267291f | |
parent | 025f2d0dad30fb29a42a7fb0a7239a009a448ada (diff) | |
download | lighttpd-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.c | 16 |
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; |