Use a weak etag comparison: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16451 (similar but simpler than the fix in CVS HEAD) --- httpd-2.0.45/modules/dav/main/util.c.davetag 2003-05-19 14:43:45.000000000 +0100 +++ httpd-2.0.45/modules/dav/main/util.c 2003-05-19 14:41:04.000000000 +0100 @@ -1072,7 +1072,17 @@ switch(state_list->type) { case dav_if_etag: { - int mismatch = strcmp(state_list->etag, etag); + int mismatch; + const char *given_etag = state_list->etag; + const char *current_etag = etag; + + if (given_etag[0] == 'W' && given_etag[1] == '/') + given_etag += 2; + + if (current_etag[0] == 'W' && current_etag[1] == '/') + current_etag += 2; + + mismatch = strcmp(given_etag, current_etag); if (state_list->condition == DAV_IF_COND_NORMAL && mismatch) { /*