@@ -1091,15 +1091,13 @@ static int dav_method_put(request_rec *r)
10911091 const char * body ;
10921092 dav_error * err ;
10931093 dav_error * err2 ;
1094- dav_error * err3 ;
10951094 dav_stream_mode mode ;
10961095 dav_stream * stream ;
10971096 dav_response * multi_response ;
10981097 int has_range ;
10991098 apr_off_t range_start ;
11001099 apr_off_t range_end ;
11011100 int rc ;
1102- int mtime_aware ;
11031101 int mtime_ret ;
11041102 apr_time_t mtime ;
11051103
@@ -1170,6 +1168,7 @@ static int dav_method_put(request_rec *r)
11701168 }
11711169
11721170 /* try parsing x-oc-mtime header */
1171+ mtime_ret = 0 ;
11731172 if (conf -> honor_mtime_header == DAV_ENABLED_ON ) {
11741173 if ((mtime_ret = dav_parse_mtime (r , & mtime )) == -1 ) {
11751174 body = apr_psprintf (r -> pool ,
@@ -1273,11 +1272,12 @@ static int dav_method_put(request_rec *r)
12731272 err2 = (* resource -> hooks -> close_stream )(stream ,
12741273 err == NULL /* commit */ );
12751274
1275+ err = dav_join_error (err , err2 );
12761276
1277- mtime_aware = * resource -> hooks -> set_mtime != NULL ;
1278- if ( err == NULL && conf -> honor_mtime_header == DAV_ENABLED_ON && mtime_ret == 1 ) {
1279- if ( mtime_aware ) {
1280- err3 = ( * resource -> hooks -> set_mtime )( resource , mtime );
1277+ if ( err == NULL && mtime_ret == 1 ) {
1278+ if ( * resource -> hooks -> set_mtime != NULL ) {
1279+ err2 = ( * resource -> hooks -> set_mtime )( resource , mtime );
1280+ err = dav_join_error ( err , err2 );
12811281 ap_log_rerror (APLOG_MARK , APLOG_DEBUG , 0 , r ,
12821282 "Setting modification time for file." );
12831283 }
@@ -1286,12 +1286,6 @@ static int dav_method_put(request_rec *r)
12861286 "Provider does not support setting modification times." );
12871287 }
12881288 }
1289-
1290- err = dav_join_error (err , err2 );
1291-
1292- if (conf -> honor_mtime_header == DAV_ENABLED_ON && mtime_aware ) {
1293- err = dav_join_error (err , err3 );
1294- }
12951289 }
12961290
12971291 /*
@@ -2816,7 +2810,6 @@ static int dav_method_mkcol(request_rec *r)
28162810 int rc ;
28172811 dav_response * multi_status ;
28182812 dav_dir_conf * conf ;
2819- int mtime_aware ;
28202813 int mtime_ret ;
28212814 apr_time_t mtime ;
28222815
@@ -2850,6 +2843,7 @@ static int dav_method_mkcol(request_rec *r)
28502843 }
28512844
28522845 /* try parsing x-oc-mtime header */
2846+ mtime_ret = 0 ;
28532847 if (conf -> honor_mtime_header == DAV_ENABLED_ON ) {
28542848 if ((mtime_ret = dav_parse_mtime (r , & mtime )) == -1 ) {
28552849 return dav_error_response (r , HTTP_BAD_REQUEST ,
@@ -2939,10 +2933,16 @@ static int dav_method_mkcol(request_rec *r)
29392933 }
29402934 }
29412935
2942- mtime_aware = resource -> hooks -> set_mtime != NULL ;
2943- if (conf -> honor_mtime_header == DAV_ENABLED_ON && mtime_ret == 1 ) {
2944- if (mtime_aware ) {
2936+ if (mtime_ret == 1 ) {
2937+ if (resource -> hooks -> set_mtime != NULL ) {
29452938 err = (resource -> hooks -> set_mtime )(resource , mtime );
2939+ if (err != NULL ) {
2940+ err = dav_push_error (r -> pool , err -> status , 0 ,
2941+ "The MKCOL was successful, but there "
2942+ "was a problem setting its modification time." ,
2943+ err );
2944+ return dav_handle_err (r , err , NULL );
2945+ }
29462946 ap_log_rerror (APLOG_MARK , APLOG_DEBUG , 0 , r ,
29472947 "Setting modification time for directory." );
29482948 }
@@ -2952,15 +2952,6 @@ static int dav_method_mkcol(request_rec *r)
29522952 }
29532953 }
29542954
2955- if (err != NULL ) {
2956- /* The dir creation was successful, but setting mtime failed. */
2957- err = dav_push_error (r -> pool , err -> status , 0 ,
2958- "The MKCOL was successful, but there "
2959- "was a problem setting its modification time." ,
2960- err );
2961- return dav_handle_err (r , err , NULL );
2962- }
2963-
29642955 /* return an appropriate response (HTTP_CREATED) */
29652956 rc = dav_created (r , NULL , "Collection" , 0 );
29662957
0 commit comments