23 #ifndef common_systemerror_hpp
24 #define common_systemerror_hpp
96 ecENAMETOOLONG = ENAMETOOLONG,
99 ecENOTEMPTY = ENOTEMPTY,
101 ecEWOULDBLOCK = EWOULDBLOCK,
105 ecEL2NSYNC = EL2NSYNC,
118 ecEDEADLOCK = EDEADLOCK,
132 ecEMULTIHOP = EMULTIHOP,
135 ecEOVERFLOW = EOVERFLOW,
136 ecENOTUNIQ = ENOTUNIQ,
143 ecELIBEXEC = ELIBEXEC,
145 ecERESTART = ERESTART,
146 ecESTRPIPE = ESTRPIPE,
148 ecENOTSOCK = ENOTSOCK,
149 ecEDESTADDRREQ = EDESTADDRREQ,
150 ecEMSGSIZE = EMSGSIZE,
151 ecEPROTOTYPE = EPROTOTYPE,
152 ecENOPROTOOPT = ENOPROTOOPT,
153 ecEPROTONOSUPPORT = EPROTONOSUPPORT,
154 ecESOCKTNOSUPPORT = ESOCKTNOSUPPORT,
155 ecEOPNOTSUPP = EOPNOTSUPP,
156 ecEPFNOSUPPORT = EPFNOSUPPORT,
157 ecEAFNOSUPPORT = EAFNOSUPPORT,
158 ecEADDRINUSE = EADDRINUSE,
159 ecEADDRNOTAVAIL = EADDRNOTAVAIL,
160 ecENETDOWN = ENETDOWN,
161 ecENETUNREACH = ENETUNREACH,
162 ecENETRESET = ENETRESET,
163 ecECONNABORTED = ECONNABORTED,
164 ecECONNRESET = ECONNRESET,
167 ecENOTCONN = ENOTCONN,
168 ecESHUTDOWN = ESHUTDOWN,
169 ecETOOMANYREFS = ETOOMANYREFS,
170 ecETIMEDOUT = ETIMEDOUT,
171 ecECONNREFUSED = ECONNREFUSED,
172 ecEHOSTDOWN = EHOSTDOWN,
173 ecEHOSTUNREACH = EHOSTUNREACH,
174 ecEALREADY = EALREADY,
175 ecEINPROGRESS = EINPROGRESS,
181 ecEREMOTEIO = EREMOTEIO,
183 ecENOMEDIUM = ENOMEDIUM,
184 ecEMEDIUMTYPE = EMEDIUMTYPE,
185 ecECANCELED = ECANCELED,
187 ecEKEYEXPIRED = EKEYEXPIRED,
188 ecEKEYREVOKED = EKEYREVOKED,
189 ecEKEYREJECTED = EKEYREJECTED,
190 ecEOWNERDEAD = EOWNERDEAD,
191 ecENOTRECOVERABLE = ENOTRECOVERABLE,
193 ecEHWPOISON = EHWPOISON,
196 ecEAI_BADFLAGS = EAI_BADFLAGS,
197 ecEAI_NONAME = EAI_NONAME,
198 ecEAI_AGAIN = EAI_AGAIN,
199 ecEAI_FAIL = EAI_FAIL,
200 ecEAI_NODATA = EAI_NODATA,
201 ecEAI_FAMILY = EAI_FAMILY,
202 ecEAI_SOCKTYPE = EAI_SOCKTYPE,
203 ecEAI_SERVICE = EAI_SERVICE,
204 ecEAI_ADDRFAMILY = EAI_ADDRFAMILY,
205 ecEAI_MEMORY = EAI_MEMORY,
206 ecEAI_SYSTEM = EAI_SYSTEM,
207 ecEAI_OVERFLOW = EAI_OVERFLOW,
208 ecEAI_INPROGRESS = EAI_INPROGRESS,
209 ecEAI_CANCELED = EAI_CANCELED,
210 ecEAI_NOTCANCELED = EAI_NOTCANCELED,
211 ecEAI_ALLDONE = EAI_ALLDONE,
212 ecEAI_INTR = EAI_INTR,
213 ecEAI_IDN_ENCODE = EAI_IDN_ENCODE,
215 ecLIBRARY_FIRST = 10000,
218 ecSSL_ERROR_NONE = 10003,
219 ecSSL_ERROR_ZERO_RETURN = 10003,
220 ecSSL_ERROR_WANT_READ = 10004,
221 ecSSL_ERROR_WANT_WRITE = 10005,
222 ecSSL_ERROR_WANT_CONNECT = 10006,
223 ecSSL_ERROR_WANT_ACCEPT = 10007,
224 ecSSL_ERROR_WANT_X509_LOOKUP = 10008,
225 ecSSL_ERROR_WANT_ASYNC = 10009,
226 ecSSL_ERROR_WANT_ASYNC_JOB = 10010,
227 ecSSL_ERROR_WANT_CLIENT_HELLO_CB = 10011,
228 ecSSL_ERROR_SYSCALL = 10012,
229 ecSSL_ERROR_PEERVERIFICATION = 10013,
254 bool ok()
const {
return this->errorcode_ == ecOK; }
316 operator int()
const {
return errorcode_; };
323 std::stringstream ss;
324 if ( errorcode_ > 0 ) {
325 if ( errorcode_ >= ecLIBRARY_FIRST )
326 ss << libstrerror( errorcode_ );
328 ss << strerror(errorcode_);
329 }
else if ( errorcode_ == 0 ) {
332 ss << gai_strerror(errorcode_);
334 ss <<
" (" << errorcode_ <<
")";
346 return "The peer certificate CN or SubjectAltNames do not match";
348 return "A SSL function encountered a failed syscall";
350 return "SSL exception thrown";
351 default :
return common::Puts() <<
"unknown error" << error;