Appointments icon indicating copy to clipboard operation
Appointments copied to clipboard

Specific characters trigger internal server error

Open bdidwischus opened this issue 5 months ago • 5 comments

Trying to book an appointment with special characters (specifically German ö or ä) results in internal server error.

Appointments: v. 2.4.6 Nextcloud Hub 10 (31.0.9)

Log extract linked to the request:

{"reqId":"(***)","level":0,"time":"2025-09-30T06:22:55+00:00","remoteAddr":"(***)","user":"(***)","app":"no app in context","method":"POST","url":"/apps/appointments/form?p=p0&v=(***)","message":"OCA\\Appointments\\Controller\\PageController::formBasePost uses the @NoAdminRequired annotation and should use the #[OCP\\AppFramework\\Http\\Attribute\\NoAdminRequired] attribute instead","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0","version":"31.0.9.1","data":[]}

{"reqId":"(***)","level":0,"time":"2025-09-30T06:22:55+00:00","remoteAddr":"(***)","user":"(***)","app":"no app in context","method":"POST","url":"/apps/appointments/form?p=p0&v=(***)","message":"OCA\\Appointments\\Controller\\PageController::formBasePost uses the @NoAdminRequired annotation and should use the #[OCP\\AppFramework\\Http\\Attribute\\NoAdminRequired] attribute instead","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0","version":"31.0.9.1","data":[]}

{"reqId":"(***)","level":0,"time":"2025-09-30T06:22:55+00:00","remoteAddr":"(***)","user":"(***)","app":"no app in context","method":"POST","url":"/apps/appointments/form?p=p0&v=(***)","message":"OCA\\Appointments\\Controller\\PageController::formBasePost uses the @NoCSRFRequired annotation and should use the #[OCP\\AppFramework\\Http\\Attribute\\NoCSRFRequired] attribute instead","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0","version":"31.0.9.1","data":[]}

{"reqId":"(***)","level":0,"time":"2025-09-30T06:22:55+00:00","remoteAddr":"(***)","user":"(***)","app":"no app in context","method":"POST","url":"/apps/appointments/form?p=p0&v=(***)","message":"OCA\\Appointments\\Controller\\PageController::formBasePost uses the @NoCSRFRequired annotation and should use the #[OCP\\AppFramework\\Http\\Attribute\\NoCSRFRequired] attribute instead","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0","version":"31.0.9.1","data":[]}

{"reqId":"(***)","level":0,"time":"2025-09-30T06:22:55+00:00","remoteAddr":"(***)","user":"(***)","app":"no app in context","method":"POST","url":"/apps/appointments/form?p=p0&v=(***)","message":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::orX without parameters is deprecated and will throw soon.","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0","version":"31.0.9.1","exception":{"Exception":"Exception","Message":"No parameters in call to OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder::orX","Code":0,"Trace":[{"file":"/var/www/nextcloud/apps/circles/lib/Db/CircleRequest.php","line":268,"function":"orX","class":"OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder","type":"->"},{"file":"/var/www/nextcloud/apps/circles/lib/Db/CircleRequest.php","line":231,"function":"buildProbeCircle","class":"OCA\\Circles\\Db\\CircleRequest","type":"->"},{"file":"/var/www/nextcloud/apps/circles/lib/Service/CircleService.php","line":808,"function":"probeCircles","class":"OCA\\Circles\\Db\\CircleRequest","type":"->"},{"file":"/var/www/nextcloud/apps/circles/lib/Api/v1/Circles.php","line":134,"function":"probeCircles","class":"OCA\\Circles\\Service\\CircleService","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/Principal.php","line":549,"function":"joinedCircles","class":"OCA\\Circles\\Api\\v1\\Circles","type":"::"},{"file":"/var/www/nextcloud/apps/dav/lib/CalDAV/CalDavBackend.php","line":371,"function":"getCircleMembership","class":"OCA\\DAV\\Connector\\Sabre\\Principal","type":"->"},{"file":"/var/www/nextcloud/lib/public/AppFramework/Db/TTransactional.php","line":45,"function":"OCA\\DAV\\CalDAV\\{closure}","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/nextcloud/apps/dav/lib/CalDAV/CalDavBackend.php","line":315,"function":"atomic","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->"},{"file":"/var/www/nextcloud/apps/appointments/lib/Backend/BCSabreImpl.php","line":852,"function":"getCalendarsForUser","class":"OCA\\DAV\\CalDAV\\CalDavBackend","type":"->"},{"file":"/var/www/nextcloud/apps/appointments/lib/Backend/BackendUtils.php","line":1870,"function":"getCalendarById","class":"OCA\\Appointments\\Backend\\BCSabreImpl","type":"->"},{"file":"/var/www/nextcloud/apps/appointments/lib/Controller/PageController.php","line":860,"function":"getMainCalId","class":"OCA\\Appointments\\Backend\\BackendUtils","type":"->"},{"file":"/var/www/nextcloud/apps/appointments/lib/Controller/PageController.php","line":729,"function":"showFormPost","class":"OCA\\Appointments\\Controller\\PageController","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":200,"function":"formBasePost","class":"OCA\\Appointments\\Controller\\PageController","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":114,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/App.php","line":161,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::"},{"file":"/var/www/nextcloud/lib/base.php","line":1063,"function":"match","class":"OC\\Route\\Router","type":"->"},{"file":"/var/www/nextcloud/index.php","line":24,"function":"handleRequest","class":"OC","type":"::"}],"File":"/var/www/nextcloud/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php","Line":87,"message":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::orX without parameters is deprecated and will throw soon.","exception":{},"CustomMessage":"Calling OCP\\DB\\QueryBuilder\\IQueryBuilder::orX without parameters is deprecated and will throw soon."}}

{"reqId":"(***)","level":3,"time":"2025-09-30T06:22:55+00:00","remoteAddr":"(***)","user":"(***)","app":"index","method":"POST","url":"/apps/appointments/form?p=p0&v=(***)","message":"Call to a member function getValue() on null in file '/var/www/nextcloud/apps/appointments/lib/Backend/BackendUtils.php' line 1046","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0","version":"31.0.9.1","exception":{"Exception":"Exception","Message":"Call to a member function getValue() on null in file '/var/www/nextcloud/apps/appointments/lib/Backend/BackendUtils.php' line 1046","Code":0,"Trace":[{"file":"/var/www/nextcloud/lib/private/AppFramework/App.php","line":161,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::"},{"file":"/var/www/nextcloud/lib/base.php","line":1063,"function":"match","class":"OC\\Route\\Router","type":"->"},{"file":"/var/www/nextcloud/index.php","line":24,"function":"handleRequest","class":"OC","type":"::"}],"File":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","Line":146,"Previous":{"Exception":"Error","Message":"Call to a member function getValue() on null","Code":0,"Trace":[{"file":"/var/www/nextcloud/apps/appointments/lib/Backend/BackendUtils.php","line":321,"function":"getAttendee","class":"OCA\\Appointments\\Backend\\BackendUtils","type":"->"},{"file":"/var/www/nextcloud/apps/appointments/lib/Backend/BCSabreImpl.php","line":1119,"function":"dataSetAttendee","class":"OCA\\Appointments\\Backend\\BackendUtils","type":"->"},{"file":"/var/www/nextcloud/apps/appointments/lib/Controller/PageController.php","line":947,"function":"setAttendee","class":"OCA\\Appointments\\Backend\\BCSabreImpl","type":"->"},{"file":"/var/www/nextcloud/apps/appointments/lib/Controller/PageController.php","line":729,"function":"showFormPost","class":"OCA\\Appointments\\Controller\\PageController","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":200,"function":"formBasePost","class":"OCA\\Appointments\\Controller\\PageController","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":114,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/App.php","line":161,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::"},{"file":"/var/www/nextcloud/lib/base.php","line":1063,"function":"match","class":"OC\\Route\\Router","type":"->"},{"file":"/var/www/nextcloud/index.php","line":24,"function":"handleRequest","class":"OC","type":"::"}],"File":"/var/www/nextcloud/apps/appointments/lib/Backend/BackendUtils.php","Line":1046},"message":"Call to a member function getValue() on null in file '/var/www/nextcloud/apps/appointments/lib/Backend/BackendUtils.php' line 1046","exception":{},"CustomMessage":"Call to a member function getValue() on null in file '/var/www/nextcloud/apps/appointments/lib/Backend/BackendUtils.php' line 1046"}}

bdidwischus avatar Sep 30 '25 06:09 bdidwischus

Which field are the special characters in ? Also what mode (weekly, simple,...) are you using ? I have tried putting the ö or ä into Organizer Name or Attendee Name and both worked (see the image below).

If possible can you email me (sergey [at] srgdev.com) your Settings Dump Appointment Page Settings > Advanced > Debugging > Settings Dump so I can replicate the setting on my test machine.

Image

SergeyMosin avatar Sep 30 '25 12:09 SergeyMosin

Still can not replicate it.

SergeyMosin avatar Sep 30 '25 13:09 SergeyMosin

Hi Sergey, Thanks for looking into it. I will email the dump shortly. The special character has been inserted into the name field. I will share screenshot by mail as well. Regards Björn

bdidwischus avatar Oct 01 '25 05:10 bdidwischus

@bdidwischus Thank you for sending me the debugging data, but I am still not able able to replicate this issue. I have tried using all kinds of special ÖÖỌỌȮȯӦӧ𝑶𝒪 characters:

  • Ö (U+00F6): Latin Small Letter O with Diaeresis (a diaeresis, or two dots, above the 'o').
  • Ö (U+00D6): Latin Capital Letter O with Diaeresis.
  • (U+1ECD): Latin Small Letter O with Dot Below.
  • (U+1ECC): Latin Capital Letter O with Dot Below.
  • Ȯ (U+022E): Latin Capital Letter O with Dot Above.
  • ȯ (U+022F): Latin Small Letter O with Dot Above.
  • Ӧ (U+04F6): Cyrillic Capital Letter O with Diaeresis.
  • ӧ (U+04F7): Cyrillic Small Letter O with Diaeresis.
  • 𝑶 (U+1D476): Mathematical Bold Italic Capital O (an 'O' with dots in a specific mathematical font).
  • 𝒪 (U+1D4AA): Mathematical Script Capital O (a stylized, script-like 'O')

but I can not trigger the error.

Further more, the error suggests that the 'Organizer' property of the event was no set or invalid, which is very strange. For the next release I'll add a debugging switch which should log more data related to error, which should help with debugging.

SergeyMosin avatar Oct 03 '25 12:10 SergeyMosin

Although, I am unable to replicate this, I have added additional logging. If this error happens again, NC logs should contain additional info tagged with $evt->ORGANIZER is not set:...

SergeyMosin avatar Oct 07 '25 21:10 SergeyMosin