You need to set SA_NODEFER on sa_mask to catch the same signal as the one you're currently handling:
SA_NODEFER: Do not prevent the signal from being received from within its own signal handler. SA_NOMASK is an obsolete, non-standard synonym for this flag.