id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,backport_to_milestone,backported 1522,TLS/SSL error code issues with OpenSSL backend,nanang,bennylp,"Issues: 1. OpenSSL error code range is too wide (consist of 3 fields: lib, func, reason) to fit into PJLIB error numbering space, so currently, only lib and reason error codes are kept/packed in pj_status_t using this formula: (lib_err*300+reason_err), but the 'shifter' 300 turns out to be too small and caused ambiguity. 2. Export OpenSSL error code to PJSIP/PJSUA level. This can be useful as a backup or alternative solution of point 1 issue above. 3. Misc error code related bugs: - avoid multiple error code retrievals on a failure, the latest retrieval will get zero. - should immediately retrieve more error code for details after getting SSL_ERROR_SSL error. - server socket: after handshake error, OpenSSL may need to write something first (e.g: notify error to client socket), so better flush write BIO first before closing the TCP socket. - client socket: after getting PJ_EEOF (server initiated disconnect), better check for OpenSSL error code, if any, replace the PJ_EEOF with OpenSSL error code. ",defect,closed,normal,release-2.0.1,pjlib,common,fixed,,,release-1.16,1