Browse Source

[mod_webdav] special-case If: (<DAV:no-lock>)

(recognize <DAV:no-lock>, but supporting logic is limited)
personal/stbuehler/ci-build
Glenn Strauss 3 years ago
parent
commit
aacdd3da02
  1. 13
      src/mod_webdav.c

13
src/mod_webdav.c

@ -3537,9 +3537,9 @@ webdav_has_lock (connection * const con,
* List = "(" 1*Condition ")"
* Condition = ["Not"] (State-token | "[" entity-tag "]")
*/
int notflag = 0;
while (*p != '\0' && *++p != ')') {
while (*p == ' ' || *p == '\t') ++p;
int notflag = 0;
if ( (p[0] & 0xdf) == 'N'
&& (p[1] & 0xdf) == 'O'
&& (p[2] & 0xdf) == 'T') {
@ -3575,6 +3575,17 @@ webdav_has_lock (connection * const con,
continue;
}
if (p[1] == 'D'
&& 0 == strncmp(p, "<DAV:no-lock>",
sizeof("<DAV:no-lock>")-1)) {
if (0 == notflag) {
http_status_set_error(con,412);/* Precondition Failed */
return 0;
}
p += sizeof("<DAV:no-lock>")-2; /* point p to '>' */
continue;
}
/* State-token (Coded-URL)
* Coded-URL = "<" absolute-URI ">"
* ; No linear whitespace (LWS) allowed in Coded-URL

Loading…
Cancel
Save