Anope Bug Tracker - Anope Stable (2.0.x series)
View Issue Details
0001695Anope Stable (2.0.x series)[All Projects] Generalpublic2017-01-11 12:032017-01-12 03:49
knux 
Adam 
normalminoralways
resolvedfixed 
LinuxUbuntu14.04
0001695: UnrealIRCd4 says "SENDUMODE is a server only command" on OperServ's GLOBOPS
When OperServ sends a GLOBOPS for example when adding an AKILL, only opers connected to the ircd to which anope are linked will see the notice.

Using strace to anope's pid, I always see this log:
write(13, "[d\303\251c. 22 15:52:58 2016] ADMIN: Boo!Boo@ircservicesdev01.prodin.orbus.fr (SkyBoo) used AKILL on *test@test.fr (Plouf), expires in 300 jours [affects 0 user(s) (0%)]\n", 165) = 165
epoll_wait(6, {{EPOLLOUT, {u32=8, u64=8}}}, 4, 5000) = 1
sendto(8, ":services.skyrock.net TKL + G *test test.fr Boo 1482591178 1482418378 :Plouf (ID: 5ATSY3XCCS)\r\n:OperServ NOTICE Boo :\2*test@test.fr\2 added to the AKILL list.\r\n:OperServ GLOBOPS :ADMIN: Boo!Boo@ircservicesdev01.prodin.orbus.fr (SkyBoo) used AKILL on *test@test.fr (Plouf), expires in 300 jours [affects 0 user(s) (0%)]\r\n", 319, 0, NULL, 0) = 319
epoll_ctl(6, EPOLL_CTL_MOD, 8, {EPOLLIN, {u32=8, u64=8}}) = 0
epoll_wait(6, {{EPOLLIN, {u32=8, u64=8}}}, 4, 5000) = 1
recvfrom(8, ":ircdev01.prodin.orbus.fr 487 OperServ :SENDUMODE is a server only command\r\n", 65534, 0, NULL, NULL) = 76

Same situation using "/msg Global GLOBAL test" command:
sendto(4, ":00BAAAAAD GLOBOPS :ADMIN: KnuX!KnuX@fw01.prodin.orbus.fr (KnuX) used GLOBAL \r\n:00BAAAAAD NOTICE $ircdev01.prodin.orbus.fr :[KnuX] test\r\n:00BAAAAAD NOTICE $ircdev02.prodin.orbus.fr :[KnuX] test\r\n:00BAAAAAD NOTICE $channels.skyrock.net :[KnuX] test\r\n:00BAAAAAD NOTICE $boo.skyrock.net :[KnuX] test\r\n", 298, 0, NULL, 0) = 298
epoll_ctl(3, EPOLL_CTL_MOD, 4, {EPOLLIN, {u32=4, u64=4}}) = 0
epoll_wait(3, {{EPOLLIN, {u32=4, u64=4}}}, 4, 5000) = 1
recvfrom(4, ":ircdev02.prodin.orbus.fr 487 Global :SENDUMODE is a server only command\r\n", 65534, 0, NULL, NULL) = 74

Assuming this situation:
ircdev01.prodin.orbus.fr (5) 201
|-services.skyrock.net (6) 00B
`-ircdev02.prodin.orbus.fr (2) 202
End of /MAP

When adding an AKILL (or else), opers on ircdev01 will receive the globops but not opers on ircdev02.
ircdev01.prodin.orbus.fr (5) 201
|-services.skyrock.net (6) 00B
`-ircdev02.prodin.orbus.fr (2) 202
End of /MAP
No tags attached.
Issue History
2017-01-11 12:03knuxNew Issue
2017-01-12 00:01AdamNote Added: 0006822
2017-01-12 00:30jobeNote Added: 0006823
2017-01-12 00:30jobeNote Edited: 0006823bug_revision_view_page.php?bugnote_id=6823#r190
2017-01-12 01:09jobeNote Added: 0006824
2017-01-12 03:49AdamNote Added: 0006825
2017-01-12 03:49AdamStatusnew => resolved
2017-01-12 03:49AdamResolutionopen => fixed
2017-01-12 03:49AdamAssigned To => Adam

Notes
(0006825)
Adam   
2017-01-12 03:49   
Thanks, fixed in a4f7d847abdde8f070a201417a456067d3beb4a1
(0006824)
jobe   
2017-01-12 01:09   
For reference the associated UnrealIRCd bug can be found at https://bugs.unrealircd.org/view.php?id=4836 [^]
(0006823)
jobe   
2017-01-12 00:30   
Ok, so having looked into the code in depth regarding this issue, this bug is the result of 2 factors.

Factor 1 is that Anope's use of GLOBOPS for UnrealIRCd 4 when it has been deprecated in favour of SENDUMODE
Factor 2 is UnrealIRCd's compatibility handling of the old GLOBOPS command by simply converting it to SENDUMODE without taking into account the fact that GLOBOPS can be sent from a user when SENDUMODE cannot

So suggested fix in this case is 2 fold, for Anope's side the suggestion is to use SENDUMODE for UnrealIRCd 4 (note this requires using a server as the source and typically involves prefixing the message with "from <nick>: " in the same way UnrealIRCd 4 does when it receives a GLOBOPS from a directly connected user) and the second part is that I will report this bug to UnrealIRCd too.

(0006822)
Adam   
2017-01-12 00:01   
Thanks for the report. If you could reproduce this with ./services -support that would be most helpful. Thanks.