| /* |
| * Function to set error code only when meaningful error has not already |
| * been set. |
| * |
| * This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| #include "prerror.h" |
| #include "secerr.h" |
| #include "sslerr.h" |
| #include "seccomon.h" |
| |
| /* look at the current value of PR_GetError, and evaluate it to see |
| * if it is meaningful or meaningless (out of context). |
| * If it is meaningless, replace it with the hiLevelError. |
| * Returns the chosen error value. |
| */ |
| int |
| ssl_MapLowLevelError(int hiLevelError) |
| { |
| int oldErr = PORT_GetError(); |
| |
| switch (oldErr) { |
| |
| case 0: |
| case PR_IO_ERROR: |
| case SEC_ERROR_IO: |
| case SEC_ERROR_BAD_DATA: |
| case SEC_ERROR_LIBRARY_FAILURE: |
| case SEC_ERROR_EXTENSION_NOT_FOUND: |
| case SSL_ERROR_BAD_CLIENT: |
| case SSL_ERROR_BAD_SERVER: |
| case SSL_ERROR_SESSION_NOT_FOUND: |
| PORT_SetError(hiLevelError); |
| return hiLevelError; |
| |
| default: /* leave the majority of error codes alone. */ |
| return oldErr; |
| } |
| } |