Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

One app is given WebDav 503 errors, but not others #2099

Closed
Bugsbane opened this issue Nov 13, 2016 · 23 comments
Closed

One app is given WebDav 503 errors, but not others #2099

Bugsbane opened this issue Nov 13, 2016 · 23 comments

Comments

@Bugsbane
Copy link
Member

Bugsbane commented Nov 13, 2016

I'm using automatic call recorder to record phone interviews right now as it has an automatic backup to WeDav feature. For some reason though, NC constantly gives it 503 errors. I've looked at other webdav issues here, however I'm not using either a shared host or any Apple device which seems to rule out the main bugs I found. Obviously, the parts showing XXXX or /PATH/TO/NEXTCLOUD/ have been modified for security.

Steps to reproduce

  1. Install ACR Call Recorder Pro (yeah, sorry. A $2.50 paid app is the only way I've found to reproduce this... :( however it allows full ADB logging, which I've included at the bottom of this issue )
  2. Set up webdav using https://domain.tld/remote.php/dav/files/username/ with the domain and username replaced. Put in username and password to relevant sections.
  3. Click "test connection"

Expected behaviour

Client should successfully be given access via webdav.

Actual behaviour

Client is given a 503 error on attempting to write, although it still seems to be able to check for the existence of specific folders.

Server configuration

Debian 8:

Web server:
Nginx

Database:
Mysql

PHP version:
PHP 5.6.27-0+deb8u1

Nextcloud version: (see Nextcloud admin page)
10.0.1

Updated from an older Nextcloud/ownCloud or fresh install:
Updated from ownCloud 9 > NC 9.0.51 > NC 9.0.53 > NC 10 > NC 10.0.1

Where did you install Nextcloud from:
Downloaded tarball from NC website

Signing status:
Not sure what this is...

Integrity check:
No errors have been found.

List of activated apps:
Enabled:

  • activity: 2.3.2
  • admin_audit: 1.0.0
  • bookmarks: 0.9.0
  • calendar: 1.4.0
  • comments: 1.0.0
  • contacts: 1.4.0.0
  • dav: 1.0.1
  • federatedfilesharing: 1.0.1
  • federation: 1.0.1
  • files: 1.5.2
  • files_external: 1.0.2
  • files_pdfviewer: 0.8.1
  • files_sharing: 1.0.0
  • files_texteditor: 2.1
  • files_trashbin: 1.0.0
  • files_versions: 1.3.0
  • files_videoplayer: 0.9.8
  • firstrunwizard: 1.1
  • gallery: 15.0.0
  • news: 9.0.4
  • notes: 2.0.2
  • notifications: 0.3.0
  • password_policy: 1.0.0
  • provisioning_api: 1.0.0
  • serverinfo: 1.1.1
  • survey_client: 0.1.5
  • systemtags: 1.0.2
  • tasks: 0.9.3
  • templateeditor: 0.1
  • theming: 1.0.1
  • updatenotification: 1.0.1
  • user_ldap: 1.0.1
  • workflowengine: 1.0.1
    Disabled:
  • documents
  • encryption
  • external
  • files_accesscontrol
  • files_automatedtagging
  • files_retention
  • podcasts
  • user_external
  • user_saml

The content of config/config.php:

Config report
<?php
$CONFIG = array (
  'passwordsalt' => 'XXXX',
  'secret' => '***',
  'trusted_domains' => 
  array (
    0 => 'localhost',
    1 => 'files.XXXX.com',
  ),
  'datadirectory' => '/home/yunohost.app/owncloud/data',
  'overwrite.cli.url' => 'http://localhost',
  'dbtype' => 'mysql',
  'version' => '9.1.1.5',
  'dbname' => 'XXXX',
  'dbhost' => 'localhost',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'XXXX',
  'dbpassword' => 'XXXX',
  'logtimezone' => 'UTC',
  'installed' => true,
  'instanceid' => 'XXXX',
  'ldapIgnoreNamingRules' => false,
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.locking' => '\\OC\\Memcache\\APC',
  'theme' => '',
  'loglevel' => 3,
  'maintenance' => false,
  'appstore.experimental.enabled' => true,
  'mail_from_address' => 'XXXX',
  'mail_smtpmode' => 'php',
  'mail_domain' => 'XXXX.com',
  'updatechecker' => true,
  'logout_url' => 'https://XXXX.XXXX.com/yunohost/sso/?action=logout',
  'htaccess.RewriteBase' => '/',
  'updater.server.url' => 'https://updates.nextcloud.org/updater_server/',
  'updater.release.channel' => 'stable',
  'preview_libreoffice_path' => '/usr/lib/libreoffice/program/soffice',
  'ldapProviderFactory' => '\\OCA\\User_LDAP\\LDAPProviderFactory',
);

Are you using external storage, if yes which one: local/smb/sftp/...
No

Are you using encryption: yes/no
No

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...
LDAP

LDAP configuration:

Ldap config:

+-------------------------------+--------------------------------------------+
| Configuration                 |                                            |
+-------------------------------+--------------------------------------------+
| hasMemberOfFilterSupport      |                                            |
| hasPagedResultSupport         |                                            |
| homeFolderNamingRule          |                                            |
| lastJpegPhotoLookup           | 0                                          |
| ldapAgentName                 |                                            |
| ldapAgentPassword             | ***                                        |
| ldapAttributesForGroupSearch  |                                            |
| ldapAttributesForUserSearch   |                                            |
| ldapBackupHost                |                                            |
| ldapBackupPort                |                                            |
| ldapBase                      | dc=XXXX,dc=org                         |
| ldapBaseGroups                | ou=XXXX,dc=XXXX,dc=XXXX               |
| ldapBaseUsers                 | ou=XXXX,dc=XXXX,dc=XXXX                |
| ldapCacheTTL                  | 600                                        |
| ldapConfigurationActive       | 1                                          |
| ldapDynamicGroupMemberURL     |                                            |
| ldapEmailAttribute            | mail                                       |
| ldapExperiencedAdmin          | 0                                          |
| ldapExpertUUIDGroupAttr       |                                            |
| ldapExpertUUIDUserAttr        |                                            |
| ldapExpertUsernameAttr        | uid                                        |
| ldapGroupDisplayName          | cn                                         |
| ldapGroupFilter               | objectClass=posixGroup                     |
| ldapGroupFilterGroups         |                                            |
| ldapGroupFilterMode           | 0                                          |
| ldapGroupFilterObjectclass    | posixGroup                                 |
| ldapGroupMemberAssocAttr      | uniqueMember                               |
| ldapHost                      | localhost                                  |
| ldapIgnoreNamingRules         |                                            |
| ldapLoginFilter               | (&(|(objectclass=posixAccount))(uid=%uid)) |
| ldapLoginFilterAttributes     |                                            |
| ldapLoginFilterEmail          | 0                                          |
| ldapLoginFilterMode           | 0                                          |
| ldapLoginFilterUsername       | 1                                          |
| ldapNestedGroups              | 0                                          |
| ldapOverrideMainServer        |                                            |
| ldapPagingSize                | 500                                        |
| ldapPort                      | 389                                        |
| ldapQuotaAttribute            | userquota                                  |
| ldapQuotaDefault              |                                            |
| ldapTLS                       | 0                                          |
| ldapUserDisplayName           | displayname                                |
| ldapUserDisplayName2          |                                            |
| ldapUserFilter                | objectclass=posixAccount                   |
| ldapUserFilterGroups          |                                            |
| ldapUserFilterMode            | 0                                          |
| ldapUserFilterObjectclass     | posixAccount                               |
| ldapUuidGroupAttribute        | auto                                       |
| ldapUuidUserAttribute         | auto                                       |
| turnOffCertCheck              | 0                                          |
| useMemberOfToDetectMembership | 1                                          |
+-------------------------------+--------------------------------------------+

Client configuration

Browser:
Android app

Operating system:
Android 6.0.1

Logs

Web server error log

No errors in the log if I clear it and then recreate this error, weirdly enough. Also nothing in the access log?!

Nextcloud log (data/nextcloud.log)

The only error I see for the relevant user is:
Error PHP stream_get_contents() expects parameter 2 to be long, string given at /PATH/TO/NEXTCLOUD/3rdparty/sabre/http/lib/Message.php#81 2016-11-13T06:57:34+00:00

Browser log

Being accessed by WebDav, not browser, so no browser log, however the ACRRecorder app itself
gives the following log when I enable logging, attempt to connect and disable logging:

####Short extract (full log below):####
11-13 11:41:15.270 D/CLOUD_CloudFolder( 5805): Folder name before processing is: ACRRecordings
11-13 11:41:15.270 D/CLOUD_CloudFolder( 5805): Folder name after processing is: ACRRecordings
11-13 11:41:15.270 D/CLOUD_WEBDAV( 5805): Checking ACR WEBDAV fodler: https://XXXX.com/remote.php/dav/files/XXXX/ACRRecordings/
11-13 11:41:15.290 D/ViewRootImpl( 5805): #1 mView = android.widget.LinearLayout{b48097 V.E...... ......I. 0,0-0,0}
11-13 11:41:15.340 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:15.350 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
11-13 11:41:16.870 D/CLOUD_WEBDAV( 5805): https://XXXX.com/remote.php/dav/files/XXXX/ACRRecordings/ is NOT there, try to create
11-13 11:41:16.950 I/System.out( 5805): 503,Service Unavailable
11-13 11:41:16.960 D/CLOUD_WEBDAV( 5805): Is https://XXXX.com/remote.php/dav/files/XXXX/ACRRecordings/ created? false
11-13 11:41:17.280 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:17.290 D/ViewRootImpl( 5805): #1 mView = android.widget.LinearLayout{3b68f33 V.E...... ......I. 0,0-0,0}
11-13 11:41:17.340 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1

Full App Debug log:

11-13 11:41:05.500 D/ViewRootImpl( 5805): ViewPostImeInputStage processKey 0
11-13 11:41:05.590 D/ViewRootImpl( 5805): ViewPostImeInputStage processKey 1
11-13 11:41:05.640 D/[ACR 18.7] NewSettingsActivity( 5805): onStart()
11-13 11:41:05.640 D/[ACR 18.7] RecordingHelper( 5805): Normal Android 6 return M4A as default recording format
11-13 11:41:05.700 W/FA      ( 5805): Value is too long; discarded. Value kind, name, value length: param, item_name, 40
11-13 11:41:05.730 I/Timeline( 5805): Timeline: Activity_idle id: android.os.BinderProxy@6ad061f time:5190874
11-13 11:41:05.750 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:06.560 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:06.630 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:06.670 I/Timeline( 5805): Timeline: Activity_launch_request id:com.nll.acr time:5191812
11-13 11:41:06.700 D/[ACR 18.7] NewSettingsActivity( 5805): onStart()
11-13 11:41:06.700 D/[ACR 18.7] RecordingHelper( 5805): Normal Android 6 return M4A as default recording format
11-13 11:41:06.780 D/OpenGLRenderer( 5805): endAllActiveAnimators on 0x9eb12280 (RippleDrawable) with handle 0x9ced3500
11-13 11:41:06.790 I/Timeline( 5805): Timeline: Activity_idle id: android.os.BinderProxy@b6c2895 time:5191931
11-13 11:41:06.800 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:06.850 W/FA      ( 5805): Value is too long; discarded. Value kind, name, value length: param, item_name, 40
11-13 11:41:08.150 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:08.190 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:08.260 I/Timeline( 5805): Timeline: Activity_launch_request id:com.nll.acr time:5193405
11-13 11:41:08.310 W/ResourcesManager( 5805): getTopLevelResources: /data/app/com.nll.acr-1/base.apk / 1.0 running in com.nll.acr rsrc of package null
11-13 11:41:08.350 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:08.350 E/MotionRecognitionManager( 5805): mSContextService = android.hardware.scontext.ISContextService$Stub$Proxy@fe0ace5
11-13 11:41:08.350 E/MotionRecognitionManager( 5805): motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@57593ba
11-13 11:41:08.350 E/MotionRecognitionManager( 5805): motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@57593ba
11-13 11:41:08.360 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:08.370 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name before processing is: #DAY#
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): getDay() is: 13
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name after processing is: 13
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name before processing is: #WEEKDAY#
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): getDay() is: Sunday
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name after processing is: Sunday
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name before processing is: #MONTH#
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): getMonth() is: November
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name after processing is: November
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name before processing is: #MONTHNUM#
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): getMonthNum() is: 11
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name after processing is: 11
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name before processing is: #YEAR#
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): getYear() is: 2016
11-13 11:41:08.410 D/CLOUD_CloudFolder( 5805): Folder name after processing is: 2016
11-13 11:41:08.430 D/[ACR 18.7] BaseAppCompatPreferenceActivity( 5805): onStart()
11-13 11:41:08.430 D/[ACR 18.7] RecordingHelper( 5805): Normal Android 6 return M4A as default recording format
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): Onresume called
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): setSummaries called
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): setCloudConnectedPreferenceIcon connected:false, Preference:DROPBOX_PREFERENCE
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): defaultCouldFolderName: ACRRecordings, customisedCloudFolderName:ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name before processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name after processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): setCloudConnectedPreferenceIcon connected:false, Preference:GOOGLEDRIVE_PREFERENCE
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): defaultCouldFolderName: ACRRecordings, customisedCloudFolderName:ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name before processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name after processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): setCloudConnectedPreferenceIcon connected:false, Preference:ONE_DRIVE_PREFERENCE
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): defaultCouldFolderName: ACRRecordings, customisedCloudFolderName:ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name before processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name after processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): setCloudConnectedPreferenceIcon connected:true, Preference:WEBDAV_PREFERENCE
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): defaultCouldFolderName: ACRRecordings, customisedCloudFolderName:ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name before processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name after processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): setCloudConnectedPreferenceIcon connected:false, Preference:FTP_PREFERENCE
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): defaultCouldFolderName: ACRRecordings, customisedCloudFolderName:ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name before processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudFolder( 5805): Folder name after processing is: ACRRecordings
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): setCloudConnectedPreferenceIcon connected:false, Preference:AUTO_EMAIL_PREFERENCE
11-13 11:41:08.440 D/CLOUD_CloudHelper( 5805): getAutoEmailCredentials username: 
11-13 11:41:08.440 D/CLOUD_CloudSettingsActivity( 5805): setCloudConnectedPreferenceIcon connected:false, Preference:GMAIL_OAUTH_PREFERENCE
11-13 11:41:08.440 D/CLOUD_CloudHelper( 5805): getGmailOAuth2Credentials username: , to: , subject: , message: , scope: https://mail.google.com, lastEmailResult: NONE, lastEmailResultData: 
11-13 11:41:08.450 D/CLOUD_CloudSettingsActivity( 5805): registerSharedPrefChangeListener
11-13 11:41:08.450 D/SecWifiDisplayUtil( 5805): Metadata value : none
11-13 11:41:08.450 D/ViewRootImpl( 5805): #1 mView = com.android.internal.policy.PhoneWindow$DecorView{23e52ce I.E...... R.....ID 0,0-0,0}
11-13 11:41:08.540 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:08.550 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
11-13 11:41:08.620 D/OpenGLRenderer( 5805): endAllActiveAnimators on 0x9eb16500 (ListView) with handle 0x9d37df40
11-13 11:41:08.620 I/Timeline( 5805): Timeline: Activity_idle id: android.os.BinderProxy@421b082 time:5193768
11-13 11:41:08.630 V/ActivityThread( 5805): updateVisibility : ActivityRecord{3ed0359 token=android.os.BinderProxy@b6c2895 {com.nll.acr/com.nll.acr.activity.NewSettingsActivity}} show : false
11-13 11:41:08.690 I/art     ( 5805): Background partial concurrent mark sweep GC freed 126959(7MB) AllocSpace objects, 43(1476KB) LOS objects, 35% free, 28MB/44MB, paused 11.646ms total 272.719ms
11-13 11:41:09.150 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:09.220 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:09.280 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:09.300 D/ViewRootImpl( 5805): #1 mView = com.android.internal.policy.PhoneWindow$DecorView{871ac90 V.E...... R.....ID 0,0-0,0}
11-13 11:41:09.360 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.370 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.370 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.400 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.400 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.400 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.410 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.410 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.410 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.420 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.420 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.420 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:09.450 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:09.460 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
11-13 11:41:15.120 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:15.180 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:15.270 D/CLOUD_CloudFolder( 5805): Folder name before processing is: ACRRecordings
11-13 11:41:15.270 D/CLOUD_CloudFolder( 5805): Folder name after processing is: ACRRecordings
11-13 11:41:15.270 D/CLOUD_WEBDAV( 5805): Checking ACR WEBDAV fodler: https://XXXX.com/remote.php/dav/files/XXXX/ACRRecordings/
11-13 11:41:15.290 D/ViewRootImpl( 5805): #1 mView = android.widget.LinearLayout{b48097 V.E...... ......I. 0,0-0,0}
11-13 11:41:15.340 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:15.350 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
11-13 11:41:16.870 D/CLOUD_WEBDAV( 5805): https://XXXX.com/remote.php/dav/files/XXXX/ACRRecordings/ is NOT there, try to create
11-13 11:41:16.950 I/System.out( 5805): 503,Service Unavailable
11-13 11:41:16.960 D/CLOUD_WEBDAV( 5805): Is https://XXXX.com/remote.php/dav/files/XXXX/ACRRecordings/ created? false
11-13 11:41:17.280 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:17.290 D/ViewRootImpl( 5805): #1 mView = android.widget.LinearLayout{3b68f33 V.E...... ......I. 0,0-0,0}
11-13 11:41:17.340 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
11-13 11:41:17.350 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:19.320 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:20.880 D/ViewRootImpl( 5805): ViewPostImeInputStage processKey 0
11-13 11:41:20.980 D/ViewRootImpl( 5805): ViewPostImeInputStage processKey 1
11-13 11:41:20.990 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:21.010 W/InputEventReceiver( 5805): Attempted to finish an input event but the input event receiver has already been disposed.
11-13 11:41:21.020 E/ViewRootImpl( 5805): sendUserActionEvent() mView == null
11-13 11:41:22.150 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:22.190 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:22.260 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:22.270 D/ViewRootImpl( 5805): #1 mView = com.android.internal.policy.PhoneWindow$DecorView{14e1677 V.E...... R.....ID 0,0-0,0}
11-13 11:41:22.350 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.350 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.350 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.380 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.380 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.380 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.380 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.380 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.380 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.390 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.390 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.390 I/Switch  ( 5805): Immediately mode attached=false laidOut=false
11-13 11:41:22.410 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:22.430 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
11-13 11:41:24.290 D/ViewRootImpl( 5805): ViewPostImeInputStage processKey 0
11-13 11:41:24.390 D/ViewRootImpl( 5805): ViewPostImeInputStage processKey 1
11-13 11:41:24.410 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:24.420 W/InputEventReceiver( 5805): Attempted to finish an input event but the input event receiver has already been disposed.
11-13 11:41:24.420 E/ViewRootImpl( 5805): sendUserActionEvent() mView == null
11-13 11:41:25.320 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:25.380 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:25.400 I/Timeline( 5805): Timeline: Activity_launch_request id:com.nll.acr time:5210541
11-13 11:41:25.420 D/CLOUD_CloudSettingsActivity( 5805): deRegisterSharedPrefChangeListener
11-13 11:41:25.440 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:25.450 W/ResourcesManager( 5805): getTopLevelResources: /data/app/com.nll.acr-1/base.apk / 1.0 running in com.nll.acr rsrc of package null
11-13 11:41:25.450 D/[ACR 18.7] NewSettingsActivity( 5805): onCreate()
11-13 11:41:25.470 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:25.480 E/MotionRecognitionManager( 5805): mSContextService = android.hardware.scontext.ISContextService$Stub$Proxy@52b1562
11-13 11:41:25.480 E/MotionRecognitionManager( 5805): motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@fa826f3
11-13 11:41:25.480 E/MotionRecognitionManager( 5805): motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@fa826f3
11-13 11:41:25.480 D/[ACR 18.7] NewSettingsActivity( 5805): onStart()
11-13 11:41:25.480 D/[ACR 18.7] RecordingHelper( 5805): Normal Android 6 return M4A as default recording format
11-13 11:41:25.490 D/SecWifiDisplayUtil( 5805): Metadata value : none
11-13 11:41:25.490 D/ViewRootImpl( 5805): #1 mView = com.android.internal.policy.PhoneWindow$DecorView{a150ff8 I.E...... R.....ID 0,0-0,0}
11-13 11:41:25.530 W/FA      ( 5805): Value is too long; discarded. Value kind, name, value length: param, item_name, 40
11-13 11:41:25.560 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:25.570 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
11-13 11:41:25.610 D/OpenGLRenderer( 5805): endAllActiveAnimators on 0x959c7780 (RippleDrawable) with handle 0x99eb61a0
11-13 11:41:25.610 I/Timeline( 5805): Timeline: Activity_idle id: android.os.BinderProxy@c144055 time:5210759
11-13 11:41:25.620 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:28.070 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:28.150 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:28.210 I/Timeline( 5805): Timeline: Activity_launch_request id:com.nll.acr time:5213359
11-13 11:41:28.260 W/ResourcesManager( 5805): getTopLevelResources: /data/app/com.nll.acr-1/base.apk / 1.0 running in com.nll.acr rsrc of package null
11-13 11:41:28.270 D/[ACR 18.7] NewSettingsActivity( 5805): onCreate()
11-13 11:41:28.280 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:28.280 E/MotionRecognitionManager( 5805): mSContextService = android.hardware.scontext.ISContextService$Stub$Proxy@aafc634
11-13 11:41:28.280 E/MotionRecognitionManager( 5805): motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@b736c5d
11-13 11:41:28.280 E/MotionRecognitionManager( 5805): motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@b736c5d
11-13 11:41:28.290 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:28.300 D/[ACR 18.7] NewSettingsActivity( 5805): onStart()
11-13 11:41:28.300 D/[ACR 18.7] RecordingHelper( 5805): Normal Android 6 return M4A as default recording format
11-13 11:41:28.300 D/SecWifiDisplayUtil( 5805): Metadata value : none
11-13 11:41:28.300 D/ViewRootImpl( 5805): #1 mView = com.android.internal.policy.PhoneWindow$DecorView{786c2fb I.E...... R.....ID 0,0-0,0}
11-13 11:41:28.360 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:28.360 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
11-13 11:41:28.390 D/OpenGLRenderer( 5805): endAllActiveAnimators on 0x9d34e080 (ListView) with handle 0x99e9dfa0
11-13 11:41:28.400 I/Timeline( 5805): Timeline: Activity_idle id: android.os.BinderProxy@2ccf6f5 time:5213542
11-13 11:41:28.400 V/ActivityThread( 5805): updateVisibility : ActivityRecord{4c00263 token=android.os.BinderProxy@c144055 {com.nll.acr/com.nll.acr.activity.NewSettingsActivity}} show : false
11-13 11:41:28.420 W/FA      ( 5805): Value is too long; discarded. Value kind, name, value length: param, item_name, 40
11-13 11:41:28.760 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:28.810 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:28.870 D/[ACR 18.7] BasePreferenceFragment( 5805): onPreferenceClick Preference: Debug Logging Record and send debug logs to the developer. Access is restricted with password because debug logs might reveal sensitive information to third party apps. You will be given access password if and when you need to trouble shoot issues clicked
11-13 11:41:28.870 I/Timeline( 5805): Timeline: Activity_launch_request id:com.nll.acr time:5214018
11-13 11:41:28.910 W/ResourcesManager( 5805): getTopLevelResources: /data/app/com.nll.acr-1/base.apk / 1.0 running in com.nll.acr rsrc of package null
11-13 11:41:28.930 D/AbsListView( 5805): Get MotionRecognitionManager
11-13 11:41:28.930 E/MotionRecognitionManager( 5805): mSContextService = android.hardware.scontext.ISContextService$Stub$Proxy@8b562bb
11-13 11:41:28.930 E/MotionRecognitionManager( 5805): motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@f233d8
11-13 11:41:28.930 E/MotionRecognitionManager( 5805): motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@f233d8
11-13 11:41:28.950 D/SecWifiDisplayUtil( 5805): Metadata value : none
11-13 11:41:28.960 D/ViewRootImpl( 5805): #1 mView = com.android.internal.policy.PhoneWindow$DecorView{dcacfdd V.E...... R.....I. 0,0-0,0}
11-13 11:41:28.960 D/ViewRootImpl( 5805): #1 mView = com.android.internal.policy.PhoneWindow$DecorView{f04a23 I.E...... R.....ID 0,0-0,0}
11-13 11:41:29.030 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:29.030 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:29.060 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:29.060 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
11-13 11:41:29.060 D/ViewRootImpl( 5805): MSG_RESIZED_REPORT: ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
11-13 11:41:29.070 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:29.130 D/OpenGLRenderer( 5805): endAllActiveAnimators on 0xb2985100 (ListView) with handle 0x99eb65f0
11-13 11:41:29.160 I/Timeline( 5805): Timeline: Activity_idle id: android.os.BinderProxy@c9e0752 time:5214309
11-13 11:41:29.250 V/ActivityThread( 5805): updateVisibility : ActivityRecord{57a5e49 token=android.os.BinderProxy@2ccf6f5 {com.nll.acr/com.nll.acr.activity.NewSettingsActivity}} show : false
11-13 11:41:29.290 D/ViewRootImpl( 5805): MSG_RESIZED: ci=Rect(0, 72 - 0, 780) vi=Rect(0, 72 - 0, 780) or=1
11-13 11:41:29.540 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:30.380 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:30.940 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:31.330 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:32.370 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:32.840 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:33.290 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:33.520 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:34.210 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:34.510 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:34.780 W/DisplayListCanvas( 5805): DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-13 11:41:37.180 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:37.240 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1
11-13 11:41:37.250 D/ViewRootImpl( 5805): #3 mView = null
11-13 11:41:37.280 E/ViewRootImpl( 5805): sendUserActionEvent() mView == null
11-13 11:41:37.310 W/IInputConnectionWrapper( 5805): beginBatchEdit on inactive InputConnection
11-13 11:41:37.310 W/IInputConnectionWrapper( 5805): getSelectedText on inactive InputConnection
11-13 11:41:37.320 W/IInputConnectionWrapper( 5805): endBatchEdit on inactive InputConnection
11-13 11:41:37.320 W/IInputConnectionWrapper( 5805): getTextBeforeCursor on inactive InputConnection
11-13 11:41:37.330 W/IInputConnectionWrapper( 5805): getTextAfterCursor on inactive InputConnection
11-13 11:41:37.380 D/ViewRootImpl( 5805): MSG_RESIZED: ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
11-13 11:41:38.900 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 0
11-13 11:41:38.990 D/ViewRootImpl( 5805): ViewPostImeInputStage processPointer 1

@tflidd
Copy link
Contributor

tflidd commented Nov 13, 2016

Looks similar to #680
and there was such a message earlier: owncloud/core#24320 (comment)

@Bugsbane
Copy link
Member Author

Could be, although I'm not convinced that the error in the Nextcloud log is necessarily related to the problem of webdav returning a 503 error. Also, in bug #680 the connection still seems to be made and able to transfer the files, where here a 503 error stops the connection.

I have a sneaking feeling that the issue may actually be an incompatible Nginx configuration, but I don't know enough about Nginx to really be able to tell.

@Bugsbane
Copy link
Member Author

Bugsbane commented Nov 15, 2016

Ok, I upped the log level from "Errors" to Debug, and when I test the connection with the app, I get a successful login attempt and then the following:

Exception: {"Message":"HTTP/1.1 404 File with name //ACRRecordings could not be located","Exception":"Sabre\DAV\Exception\NotFound","Code":0,"Trace":"#0 /path/to/Nextcloud/XXXX/apps/dav/lib/Files/FilesHome.php(55): OCA\DAV\Connector\Sabre\Directory->getChild('ACRRecordings')\n#1 /path/to/Nextcloud/XXXX/3rdparty/sabre/dav/lib/DAV/Tree.php(76): OCA\DAV\Files\FilesHome->getChild('ACRRecordings')\n#2 /path/to/Nextcloud/XXXX/3rdparty/sabre/dav/lib/DAV/Server.php(903): Sabre\DAV\Tree->getNodeForPath('files/XXXX/ACR...')\n#3 /path/to/Nextcloud/XXXX/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(334): Sabre\DAV\Server->getPropertiesForPath('files/XXXX/ACR...', NULL, 0)\n#4 [internal function]: Sabre\DAV\CorePlugin->httpPropFind(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))\n#5 /path/to/Nextcloud/XXXX/3rdparty/sabre/event/lib/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\n#6 /path/to/Nextcloud/XXXX/3rdparty/sabre/dav/lib/DAV/Server.php(459): Sabre\Event\EventEmitter->emit('method:PROPFIND', Array)\n#7 /path/to/Nextcloud/XXXX/3rdparty/sabre/dav/lib/DAV/Server.php(248): Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))\n#8 /path/to/Nextcloud/XXXX/apps/dav/lib/Server.php(184): Sabre\DAV\Server->exec()\n#9 /path/to/Nextcloud/XXXX/apps/dav/appinfo/v2/remote.php(30): OCA\DAV\Server->exec()\n#10 /path/to/Nextcloud/XXXX/remote.php(165): require_once('/path/to/Nextcloud/ownclo...')\n#11 {main}","File":"/path/to/Nextcloud/XXXX/apps/dav/lib/Connector/Sabre/Directory.php","Line":206,"User":"XXXX"}

Also, the developer of the app got back to me and let me know that their app uses Apache Jackrabbit for WebDav access. Does anyone know a FOSS Android app that uses Jackrabbit I could test with? I notice that the ownCloud android-library seems to use it...

@fabefour
Copy link

I have also Problems with an app using Jackrabbit and present nextcloud release (11.0.1)
The funny thing is:

If i set "debug => false" in config.php i get:
org.apache.jackrabbit.webdav.DavException: Service Unavailable at org.apache.jackrabbit.webdav.client.methods.DavMethodBase.getResponseException(DavMethodBase.java:165) at org.apache.jackrabbit.webdav.client.methods.DavMethodBase.getResponseBodyAsMultiStatus(DavMethodBase.java:91) ...
If i set "debug => true" to look further into it, it syncs flawlessly and there is no error brought up.

@fersingb
Copy link

fersingb commented Jan 20, 2017

Hi,

I'm experiencing a similar issue with ACR and Nextcloud.

Here is what I get in the adb log:

01-19 20:23:18.864 18232 18256 D CLOUD_WEBDAV: https://MYNEXTCLOUD/remote.php/webdav/ACR/ exists, check write access to https://MYNEXTCLOUD/remote.php/webdav/ACR/tmp/
01-19 20:23:18.924 18232 18256 I System.out: 503,Service Unavailable
01-19 20:23:18.924 18232 18256 D CLOUD_WEBDAV: https://MYNEXTCLOUD/remote.php/webdav/ACR/ exists, but HAS NOT GOT write access or folder already exists. Try to delete it
01-19 20:23:19.534 18232 18256 I System.out: 404,Not Found

I tried to get debug infos in Nextcloud, but setting the debug flag to true seems to make the webdav sync work.

@Bugsbane Did you find something since few months ago?

@Messinger
Copy link

Same here.

Tried to resolve where the 503 happens, but no chance. When setting "debug => true" into config it works. And it is only one app making some problems:

"PROPFIND /owncloud/remote.php/webdav/ HTTP/1.1" 503 1603 "-" "FRITZ!OS/141.06.63"

Any hint how to debug the reason or the place?

@fersingb
Copy link

Could it be something related to the app not sending all the required cookies? Davdroid required an upgrade to fix a bug that looks similar: https://help.nextcloud.com/t/davdroid-no-longer-works-with-nc/579/32

And since the behavior changes when debug is set to true, I guess we can exclude the bad apache/nginx configuration. Maybe the debug mode is more permissive regarding the missing cookies?

@fersingb
Copy link

fersingb commented Jan 23, 2017

@Bugsbane, does adding the Jakarta useragent (ACR's UserAgent) in the incompatibleUserAgents work for you? It seems to be working for me:

        private static function performSameSiteCookieProtection() {
                $request = \OC::$server->getRequest();

                // Some user agents are notorious and don't really properly follow HTTP
                // specifications. For those, have an automated opt-out. Since the protection
                // for remote.php is applied in base.php as starting point we need to opt out
                // here.
                $incompatibleUserAgents = [
                        // OS X Finder
                        '/^WebDAVFS/',
                        '/^Jakarta Commons-HttpClient/',
                ];

It's in lib/base.php

If it's the case, then it really seems to be a cookie issue and it should be fixed in ACR.

EDIT:

And if we look at the whole method we understand why it's working in debug mode:

        private static function performSameSiteCookieProtection() {
                $request = \OC::$server->getRequest();

                // Some user agents are notorious and don't really properly follow HTTP
                // specifications. For those, have an automated opt-out. Since the protection
                // for remote.php is applied in base.php as starting point we need to opt out
                // here.
                $incompatibleUserAgents = [
                        // OS X Finder
                        '/^WebDAVFS/',
                        '/^Jakarta Commons-HttpClient/',
                ];
                if($request->isUserAgent($incompatibleUserAgents)) {
                        return;
                }

                if(count($_COOKIE) > 0) {
                        $requestUri = $request->getScriptName();
                        $processingScript = explode('/', $requestUri);
                        $processingScript = $processingScript[count($processingScript)-1];
                        // FIXME: In a SAML scenario we don't get any strict or lax cookie
                        // send for the ACS endpoint. Since we have some legacy code in Nextcloud
                        // (direct PHP files) the enforcement of lax cookies is performed here
                        // instead of the middleware.
                        //
                        // This means we cannot exclude some routes from the cookie validation,
                        // which normally is not a problem but is a little bit cumbersome for
                        // this use-case.
                        // Once the old legacy PHP endpoints have been removed we can move
                        // the verification into a middleware and also adds some exemptions.
                        //
                        // Questions about this code? Ask Lukas ;-)
                        $currentUrl = substr(explode('?',$request->getRequestUri(), 2)[0], strlen(\OC::$WEBROOT));
                        if($currentUrl === '/index.php/apps/user_saml/saml/acs') {
                                return;
                        }
                        // For the "index.php" endpoint only a lax cookie is required.
                        if($processingScript === 'index.php') {
                                if(!$request->passesLaxCookieCheck()) {
                                        self::sendSameSiteCookies();
                                        header('Location: '.$_SERVER['REQUEST_URI']);
                                        exit();
                                }
                        } else {
                                // All other endpoints require the lax and the strict cookie
                                if(!$request->passesStrictCookieCheck()) {
                                        self::sendSameSiteCookies();
                                        // Debug mode gets access to the resources without strict cookie
                                        // due to the fact that the SabreDAV browser also lives there.
                                        if(!\OC::$server->getConfig()->getSystemValue('debug', false)) {
                                                http_response_code(\OCP\AppFramework\Http::STATUS_SERVICE_UNAVAILABLE);
                                                exit();
                                        }
                                }
                        }
                } elseif(!isset($_COOKIE['nc_sameSiteCookielax']) || !isset($_COOKIE['nc_sameSiteCookiestrict'])) {
                        self::sendSameSiteCookies();
                }

In the else block:

                                        // Debug mode gets access to the resources without strict cookie
                                        // due to the fact that the SabreDAV browser also lives there.
                                        if(!\OC::$server->getConfig()->getSystemValue('debug', false)) {
                                                http_response_code(\OCP\AppFramework\Http::STATUS_SERVICE_UNAVAILABLE);
                                                exit();
                                        }

I might be wrong but I think that explains everything. I contacted the ACR dev.

@Messinger
Copy link

Ok, tested it myself with the FRITZ client (for those of you not knowing it, it is a dsl/cable router called Fritz!Box with builtin webdav cache built by AVM)

Eg adding '/^FRITZ/' to the incompatible list let it work perfect.

I don't know what happens if send a support ticket to the company. In the meanwhile the broken client list should expended for this system, it may take a long time until AVM will fix their router software.

@fabefour
Copy link

As my useragent contains "Jakarta Commons-HttpClient" it works for me by adding the '/^Jakarta Commons-HttpClient/' line, as well

@fersingb
Copy link

Got an answer from the ACR dev:

I cannot fix it because ACR does not handle connection but JackRabbit (version 2.13.0) webdav library it uses.

It is most probably due to bug in the library, unfortunately there is no other modern WebDav library that handles fil transfers and I don;t have time to write my own implementation at the moment

I'll try to contact the Jackrabbit guys..

@reschke
Copy link

reschke commented Jan 24, 2017

a) If you believe there's a bug, by all means open a ticket, optimally with a reproducible test case. -> https://issues.apache.org/jira/browse/JCR

b) Don't use 2.13.0. It's an unstable release. See http://jackrabbit.apache.org/jcr/downloads.html

@Bugsbane
Copy link
Member Author

Bugsbane commented Jan 27, 2017

@Bugsbane, does adding the Jakarta useragent (ACR's UserAgent) in the incompatibleUserAgents work for you?

Yes, it does! (/me does a little happy dance). Now to go hunt down the ACR dev...

Don't use 2.13.0. It's an unstable release.

@reschke - Is using the current release likely to fix this issue? @AndyScherzinger What version of JackRabbit is the Nextcloud app (v1.4) using? I ask because this seems to be working just fine...

@reschke
Copy link

reschke commented Jan 27, 2017

@Bugsbane Thinking of it, Jackrabbit doesn't do any content handling anyway (at least I'm not aware of that). It all comes from the underlying Apache Http client library, which Jackrabbit just completely swapped out (see https://issues.apache.org/jira/browse/JCR-2406).

FWIW, I'm also not sure why a WebDAV library is needed for a simple upload anyway.

@fersingb
Copy link

fersingb commented Jan 27, 2017

The ACR dev sent me a latest version of the app with jackrabbit 2.14 and it didn't work either. He also thought that the issue might not come from jackrabbit itself but the apache http-client library.

@reschke
Copy link

reschke commented Jan 27, 2017

Well, if there was a test case...

@AndyScherzinger
Copy link
Member

AndyScherzinger commented Jan 27, 2017

@Bugsbane Android app version 1.4 uses Jackrabbit 2.12.4 (Thus Apache HTTP client 3.1)

@Bugsbane
Copy link
Member Author

Ok, so this is working for me since adding Jakarta user agent to the incompatible list. I don't really understand what's going on here, but if I can run any tests or provide any info to help triage this, anyone, just let me know.

@Bugsbane
Copy link
Member Author

So, Still getting this with Nextcloud 12 and the most recent version of ACR. Not sure where the bug is exactly (JackRabbit? Apache Http? Nextcloud?) but I just thought I'd report here in case it was helpful.

@nextcloud-bot nextcloud-bot added the stale Ticket or PR with no recent activity label Jun 20, 2018
@fersingb
Copy link

fersingb commented Jul 14, 2018

This issue is still not resolved. I have to add the Jakarta agent to the incompatibility list after each Nextcloud upgrade, as mentioned here: #2099 (comment)

I'd be great if the agent could be added to the default list for the next upgrade.

Thanks

@nextcloud-bot nextcloud-bot removed the stale Ticket or PR with no recent activity label Jul 14, 2018
@fersingb
Copy link

fersingb commented Nov 8, 2018

The initial report was almost 2 years ago, the workaround was provided more than 1 year ago and it's still not included in the latest 13.0.7 release.

Could someone please acknowledge the issue and include the fix in some upcoming release?

Thanks

fersingb pushed a commit to fersingb/server that referenced this issue Dec 16, 2018
fersingb pushed a commit to fersingb/server that referenced this issue Dec 16, 2018
Signed-off-by: Boris Fersing <boris@fersing.net>
fersingb pushed a commit to fersingb/server that referenced this issue Dec 17, 2018
Signed-off-by: Boris Fersing <boris@fersing.net>
@fersingb
Copy link

Since the PR was rejected, here is a more permanent fix I wasn't aware of. Instead of modifying the base.php file, it's possible to tweak the csrf.optout value in config.php as well:

'csrf.optout' => array(
	'/^WebDAVFS/', // OS X Finder
	'/^Microsoft-WebDAV-MiniRedir/', // Windows webdav drive
        '/^Jakarta Commons-HttpClient/',
),

@skjnldsv
Copy link
Member

skjnldsv commented Jun 5, 2019

And closing as stated by rullzer

But the ACR Call recorder is not something we should add to the default list in my opinion. Please just add it to 'csrf.optout' in your config.php (see /config/config.sample.php@master#L1687-L1697 )

@skjnldsv skjnldsv closed this as completed Jun 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants