2 * Copyright 2016 Facebook, Inc.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <folly/Optional.h>
19 #include <folly/io/async/AsyncSocketException.h>
24 CLIENT_RENEGOTIATION, // A client tried to renegotiate with this server
25 INVALID_RENEGOTIATION, // We attempted to start a renegotiation.
26 EARLY_WRITE, // Wrote before SSL connection established.
27 // An openssl error type. The openssl specific methods should be used
28 // to find the real error type.
29 // This exists for compatibility until all error types can be move to proper
34 class SSLException : public folly::AsyncSocketException {
38 unsigned long errError,
39 int sslOperationReturnValue,
42 explicit SSLException(SSLError error);
44 SSLError getType() const {
48 // These methods exist for compatibility until there are proper exceptions
49 // for all ssl error types.
50 int getOpensslSSLError() const {
51 return opensslSSLError;
54 unsigned long getOpensslErr() const {
61 unsigned long opensslErr;