I'm still trying to understand what side effects there are if a sendi function fails. So far as I can tell, there are no written contracts/specs about what should happen (please tell me if that's wrong), so it's a matter of looking at the code. The only BTLs with sendi code are portals, mx, and sm, and, among those, only mx has its sendi function exposed outside the BTL. So, there seems to be room to set new precedents.

One side effect is that if a sendi function fails, it should allocate a descriptor. This makes no sense to me since the upper layer (PML) already has code for this. So, it makes no sense to me that each implementing BTL sendi function should also have such code. I think it's much cleaner for a sendi either to complete successfully or else leave no side effects.

Otherwise, does an unsuccessful sendi leave zero side effects? Things are left as if the sendi had not been attempted at all?

Reply via email to