So you did, and you preceded it with sigfillset(), so that is fine.
Yes I think it is the return value of sigwaitinfo() which you are
interpreting incorrectly. According to POSIX:
"Upon successful completion (that is, one of the signals specified by
set is pending or is generated) sigwaitinfo() ... shall return the
selected signal number. Otherwise, the function shall return a value of
-1 and set errno to indicate the error."
I presume here "return the selected signal number" means really return,
not (in the case of success) providing it via the 'info' out parameter
(which it is also required to do if not NULL). Since no signal number
has value 0, neither success nor failure will return 0.
This is quite confusing, as sigwait() does return 0 in case of success
and provide the signal number via its out parameter.
Chris