mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-09-13 05:38:05 -04:00
scripts/ZoneMinder/lib/ZoneMinder/Control/ held both ONVIF.pm and onvif.pm, the only pair of paths in the tree differing solely in case. On a case insensitive filesystem git can materialise just one of them, so a macOS clone reports the loser as modified forever and git add -A commits one module's contents over the other. The runtime consequence is worse than the checkout noise. Every seeded Controls row uses Protocol='ONVIF', and zmcontrol.pl builds the module name from that column. Where onvif.pm is the file that survived, require ZoneMinder::Control::ONVIF still succeeds because the filename matches, but it defines the lowercase package, so the bless lands in an empty ::ONVIF and the first method call dies. ONVIF.pm has replaced onvif.pm since the unified module landed. Of the subs only onvif.pm defines, all but horizontalPatrol and horizontalPatrolStop exist there under underscore-prefixed names, and every ONVIF-protocol Controls row has CanAutoScan=0, so nothing can reach those two. Nothing ever moved existing installs onto the new protocol name, so add zm_update-1.39.29.sql to do it. zm_update-1.35.23.sql sent Protocol='onvif' to FoscamCGI, which was right in 2021 when onvif.pm held the Foscam CGI protocol and was copied to FoscamCGI.pm, but onvif.pm was afterwards replaced with a real ONVIF implementation and the seed row restored, so rows written since belong on ONVIF. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>