|
1 /* |
|
2 * Function to set error code only when meaningful error has not already |
|
3 * been set. |
|
4 * |
|
5 * This Source Code Form is subject to the terms of the Mozilla Public |
|
6 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
8 |
|
9 #include "prerror.h" |
|
10 #include "secerr.h" |
|
11 #include "sslerr.h" |
|
12 #include "seccomon.h" |
|
13 |
|
14 /* look at the current value of PR_GetError, and evaluate it to see |
|
15 * if it is meaningful or meaningless (out of context). |
|
16 * If it is meaningless, replace it with the hiLevelError. |
|
17 * Returns the chosen error value. |
|
18 */ |
|
19 int |
|
20 ssl_MapLowLevelError(int hiLevelError) |
|
21 { |
|
22 int oldErr = PORT_GetError(); |
|
23 |
|
24 switch (oldErr) { |
|
25 |
|
26 case 0: |
|
27 case PR_IO_ERROR: |
|
28 case SEC_ERROR_IO: |
|
29 case SEC_ERROR_BAD_DATA: |
|
30 case SEC_ERROR_LIBRARY_FAILURE: |
|
31 case SEC_ERROR_EXTENSION_NOT_FOUND: |
|
32 case SSL_ERROR_BAD_CLIENT: |
|
33 case SSL_ERROR_BAD_SERVER: |
|
34 case SSL_ERROR_SESSION_NOT_FOUND: |
|
35 PORT_SetError(hiLevelError); |
|
36 return hiLevelError; |
|
37 |
|
38 default: /* leave the majority of error codes alone. */ |
|
39 return oldErr; |
|
40 } |
|
41 } |