11.7.1 TPESVCFAIL and TPESVCERR Errors

If the reply portion of a communication fails as a result of a call to tpcall() or tpgetrply(), the system returns TPESVCERR or TPSEVCFAIL to tperrno(5). The system determines the error by the arguments that are passed to tpreturn() and the processing that is performed by this function.

If tpreturn() encounters an error in processing or handling arguments, the system returns an error to the original requester and sets tperrno(5) to TPESVCERR. The receiver determines that an error has occurred by checking the value of tperrno(). The system does not send the data from the tpreturn() function, and if the failure occurred on tpgetrply(), it renders the call descriptor invalid.

If tpreturn() does not encounter the TPESVCERR error, then the value returned in rval determines the success or failure of the call. If the application specifies TPFAIL in the rval parameter, the system returns TPESVCFAIL in tperrno(5) and sends the data message to the caller. If rval is set to TPSUCCESS, the system returns successfully to the caller, tperrno() is not set, and the caller receives the data.