OK, so now I understand that we are using the standard errno philosophy in which:
errno always contains the most recent error from anywhere within messenger code. ( and is iniialized to 0 on creation of messenger struct. ) But another part of this philosophy is: No system call (in our case, translate that to 'Messenger API call' or maybe 'Messenger function') ever sets errno to zero. Yet, I am seeing it get set to zero, sometimes. ( The only fn I have actually observed doing this so far is pn_output_write_amqp(), but there may be others ) Is there a reason why we depart from the standard errno philosophy here? Or is it just an oversight? If it's an oversight, I'd like to put something like assert(code); as the first line in pn_error_set(). If it's not an oversight, I'd like to know the reasoning so I can document it.