diff -ru neon27-0.29.6.orig/src/ne_acl3744.c neon27-0.29.6/src/ne_acl3744.c --- neon27-0.29.6.orig/src/ne_acl3744.c 2008-10-15 03:19:41.000000000 +0800 +++ neon27-0.29.6/src/ne_acl3744.c 2019-11-05 10:54:29.081951809 +0800 @@ -160,6 +160,9 @@ ne_request *req = ne_request_create(sess, "ACL", uri); ne_buffer *body = acl_body(entries, numentries); + /* note: NOT SURE if translate:f required here, have not seen this request */ + ne_add_request_header(req, "translate", "f"); + #ifdef NE_HAVE_DAV ne_lock_using_resource(req, uri, 0); #endif diff -ru neon27-0.29.6.orig/src/ne_basic.c neon27-0.29.6/src/ne_basic.c --- neon27-0.29.6.orig/src/ne_basic.c 2008-02-08 07:22:07.000000000 +0900 +++ neon27-0.29.6/src/ne_basic.c 2019-11-05 10:54:29.061951808 +0800 @@ -58,6 +58,7 @@ ret = ne_request_dispatch(req); + /* note: no translate:f required here (based on comms with MS IIS 7.5) */ value = ne_get_response_header(req, "Last-Modified"); if (ret == NE_OK && ne_get_status(req)->klass != 2) { @@ -102,6 +103,9 @@ req = ne_request_create(sess, "PUT", uri); + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); + #ifdef NE_HAVE_DAV ne_lock_using_resource(req, uri, 0); ne_lock_using_parent(req, uri); @@ -173,6 +177,9 @@ ne_add_request_header(req, "Range", brange); ne_add_request_header(req, "Accept-Ranges", "bytes"); + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); + ret = dispatch_to_fd(req, fd, brange); status = ne_get_status(req); @@ -222,6 +229,9 @@ ne_request *req = ne_request_create(sess, "GET", uri); int ret; + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); + ret = dispatch_to_fd(req, fd, NULL); if (ret == NE_OK && ne_get_status(req)->klass != 2) { @@ -240,6 +250,8 @@ ne_request *req = ne_request_create(sess, "POST", uri); int ret; + /* note: NOT SURE if translate:f required here, not checked */ + ne_add_request_header(req, "translate", "f"); ne_set_request_flag(req, NE_REQFLAG_IDEMPOTENT, 0); ne_set_request_body_buffer(req, buffer, strlen(buffer)); @@ -355,6 +367,10 @@ int ne_options2(ne_session *sess, const char *uri, unsigned int *caps) { ne_request *req = ne_request_create(sess, "OPTIONS", uri); + + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); + int ret = ne_request_dispatch(req); const char *header = ne_get_response_header(req, "DAV"); @@ -410,6 +426,10 @@ { ne_request *req = ne_request_create( sess, is_move?"MOVE":"COPY", src ); + /* note: translate:f required here (based on comms with MS IIS 7.5) + Only saw MOVE, I haven't seen a COPY request yet. */ + ne_add_request_header(req, "translate", "f"); + /* 2518 S8.9.2 says only use Depth: infinity with MOVE. */ if (!is_move) { ne_add_depth_header(req, depth); @@ -455,6 +475,9 @@ { ne_request *req = ne_request_create(sess, "DELETE", uri); + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); + #ifdef NE_HAVE_DAV ne_lock_using_resource(req, uri, NE_DEPTH_INFINITE); ne_lock_using_parent(req, uri); @@ -485,6 +508,9 @@ req = ne_request_create(sess, "MKCOL", real_uri); + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); + #ifdef NE_HAVE_DAV ne_lock_using_resource(req, real_uri, 0); ne_lock_using_parent(req, real_uri); diff -ru neon27-0.29.6.orig/src/ne_locks.c neon27-0.29.6/src/ne_locks.c --- neon27-0.29.6.orig/src/ne_locks.c 2007-02-05 19:09:27.000000000 +0900 +++ neon27-0.29.6/src/ne_locks.c 2019-11-05 10:54:29.097951809 +0800 @@ -392,6 +392,9 @@ { ne_request *req = ne_request_create(sess, "UNLOCK", lock->uri.path); int ret; + + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); ne_print_request_header(req, "Lock-Token", "<%s>", lock->token); @@ -697,6 +700,9 @@ ctx.req = req; ctx.parser = parser; + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); + /* LOCK is not idempotent. */ ne_set_request_flag(req, NE_REQFLAG_IDEMPOTENT, 0); @@ -784,6 +790,9 @@ ctx.token = lock->token; ctx.parser = parser; + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); + /* Handle the response and update *lock appropriately. */ ne_xml_push_handler(parser, lk_startelm, lk_cdata, lk_endelm, &ctx); diff -ru neon27-0.29.6.orig/src/ne_oldacl.c neon27-0.29.6/src/ne_oldacl.c --- neon27-0.29.6.orig/src/ne_oldacl.c 2008-10-15 03:19:41.000000000 +0800 +++ neon27-0.29.6/src/ne_oldacl.c 2019-11-05 10:54:29.085951809 +0800 @@ -113,6 +113,10 @@ ne_request *req = ne_request_create(sess, "ACL", uri); ne_buffer *body = acl_body(entries, numentries); + /* note: NOT SURE if translate:f required here, have not seen this request */ + ne_add_request_header(req, "translate", "f"); + + #ifdef NE_HAVE_DAV ne_lock_using_resource(req, uri, 0); #endif diff -ru neon27-0.29.6.orig/src/ne_props.c neon27-0.29.6/src/ne_props.c --- neon27-0.29.6.orig/src/ne_props.c 2008-01-31 01:38:19.000000000 +0900 +++ neon27-0.29.6/src/ne_props.c 2019-11-05 10:54:29.077951809 +0800 @@ -192,6 +192,9 @@ ne_request *req = ne_request_create(sess, "PROPPATCH", uri); ne_buffer *body = ne_buffer_create(); int n, ret; + + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(req, "translate", "f"); /* Create the request body */ ne_buffer_czappend(body, "\n" @@ -597,6 +600,9 @@ ret->request = ne_request_create(sess, "PROPFIND", uri); ret->value = ne_buffer_create(); + /* note: translate:f required here (based on comms with MS IIS 7.5) */ + ne_add_request_header(ret->request, "translate", "f"); + ne_add_depth_header(ret->request, depth); ne_207_set_response_handlers(ret->parser207,