rhack 1.2.1 → 1.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/README.md +21 -9
- data/ext/curb/curb.c +977 -977
- data/ext/curb/curb.h +52 -52
- data/ext/curb/curb_config.h +270 -270
- data/ext/curb/curb_easy.c +3437 -3434
- data/ext/curb/curb_easy.h +94 -94
- data/ext/curb/curb_errors.c +647 -647
- data/ext/curb/curb_errors.h +129 -129
- data/ext/curb/curb_macros.h +162 -162
- data/ext/curb/curb_multi.c +704 -702
- data/ext/curb/curb_multi.h +26 -26
- data/ext/curb/curb_postfield.c +523 -523
- data/ext/curb/curb_postfield.h +40 -40
- data/ext/curb/curb_upload.c +80 -80
- data/ext/curb/curb_upload.h +30 -30
- data/ext/curb-original/curb.c +977 -977
- data/ext/curb-original/curb.h +52 -52
- data/ext/curb-original/curb_config.h +238 -238
- data/ext/curb-original/curb_easy.c +3404 -3404
- data/ext/curb-original/curb_easy.h +90 -90
- data/ext/curb-original/curb_errors.c +647 -647
- data/ext/curb-original/curb_errors.h +129 -129
- data/ext/curb-original/curb_macros.h +159 -159
- data/ext/curb-original/curb_multi.c +633 -633
- data/ext/curb-original/curb_multi.h +26 -26
- data/ext/curb-original/curb_postfield.c +523 -523
- data/ext/curb-original/curb_postfield.h +40 -40
- data/ext/curb-original/curb_upload.c +80 -80
- data/ext/curb-original/curb_upload.h +30 -30
- data/lib/rhack/clients/base.rb +61 -10
- data/lib/rhack/clients/oauth.rb +4 -4
- data/lib/rhack/curl/easy.rb +1 -0
- data/lib/rhack/curl/global.rb +2 -0
- data/lib/rhack/curl/response.rb +4 -2
- data/lib/rhack/frame.rb +70 -32
- data/lib/rhack/js/browser/env.js +697 -697
- data/lib/rhack/js/browser/jquery.js +7180 -7180
- data/lib/rhack/js/browser/xmlsax.js +1564 -1564
- data/lib/rhack/js/browser/xmlw3cdom_1.js +1443 -1443
- data/lib/rhack/js/browser/xmlw3cdom_2.js +2744 -2744
- data/lib/rhack/page.rb +227 -68
- data/lib/rhack/scout.rb +52 -26
- data/lib/rhack/scout_squad.rb +10 -2
- data/lib/rhack/version.rb +1 -1
- data/rhack.gemspec +1 -1
- metadata +17 -17
data/ext/curb/curb_errors.c
CHANGED
@@ -1,647 +1,647 @@
|
|
1
|
-
/* curb_errors.c - Ruby exception types for curl errors
|
2
|
-
* Copyright (c)2006 Ross Bamford.
|
3
|
-
* Licensed under the Ruby License. See LICENSE for details.
|
4
|
-
*
|
5
|
-
* $Id: curb_errors.c 10 2006-11-20 00:17:30Z roscopeco $
|
6
|
-
*/
|
7
|
-
#include "curb_errors.h"
|
8
|
-
|
9
|
-
extern VALUE mCurl;
|
10
|
-
|
11
|
-
#ifdef RDOC_NEVER_DEFINED
|
12
|
-
mCurl = rb_define_module("Curl");
|
13
|
-
#endif
|
14
|
-
|
15
|
-
/* base errors */
|
16
|
-
VALUE mCurlErr;
|
17
|
-
VALUE eCurlErrError;
|
18
|
-
VALUE eCurlErrFTPError;
|
19
|
-
VALUE eCurlErrHTTPError;
|
20
|
-
VALUE eCurlErrFileError;
|
21
|
-
VALUE eCurlErrLDAPError;
|
22
|
-
VALUE eCurlErrTelnetError;
|
23
|
-
VALUE eCurlErrTFTPError;
|
24
|
-
|
25
|
-
/* Specific libcurl errors */
|
26
|
-
VALUE eCurlErrOK; /* not really an error but a return code */
|
27
|
-
VALUE eCurlErrUnsupportedProtocol;
|
28
|
-
VALUE eCurlErrFailedInit;
|
29
|
-
VALUE eCurlErrMalformedURL;
|
30
|
-
VALUE eCurlErrMalformedURLUser;
|
31
|
-
VALUE eCurlErrNotBuiltIn;
|
32
|
-
VALUE eCurlErrProxyResolution;
|
33
|
-
VALUE eCurlErrHostResolution;
|
34
|
-
VALUE eCurlErrConnectFailed;
|
35
|
-
VALUE eCurlErrFTPWierdReply;
|
36
|
-
VALUE eCurlErrFTPAccessDenied;
|
37
|
-
VALUE eCurlErrFTPBadPassword;
|
38
|
-
VALUE eCurlErrFTPWierdPassReply;
|
39
|
-
VALUE eCurlErrFTPWierdUserReply;
|
40
|
-
VALUE eCurlErrFTPWierdPasvReply;
|
41
|
-
VALUE eCurlErrFTPWierd227Format;
|
42
|
-
VALUE eCurlErrFTPCantGetHost;
|
43
|
-
VALUE eCurlErrFTPCantReconnect;
|
44
|
-
VALUE eCurlErrFTPCouldntSetBinary;
|
45
|
-
VALUE eCurlErrPartialFile;
|
46
|
-
VALUE eCurlErrFTPCouldntRetrFile;
|
47
|
-
VALUE eCurlErrFTPWrite;
|
48
|
-
VALUE eCurlErrFTPQuote;
|
49
|
-
VALUE eCurlErrHTTPFailed;
|
50
|
-
VALUE eCurlErrWriteError;
|
51
|
-
VALUE eCurlErrMalformedUser;
|
52
|
-
VALUE eCurlErrFTPCouldntStorFile;
|
53
|
-
VALUE eCurlErrReadError;
|
54
|
-
VALUE eCurlErrOutOfMemory;
|
55
|
-
VALUE eCurlErrTimeout;
|
56
|
-
VALUE eCurlErrFTPCouldntSetASCII;
|
57
|
-
VALUE eCurlErrFTPPortFailed;
|
58
|
-
VALUE eCurlErrFTPCouldntUseRest;
|
59
|
-
VALUE eCurlErrFTPCouldntGetSize;
|
60
|
-
VALUE eCurlErrHTTPRange;
|
61
|
-
VALUE eCurlErrHTTPPost;
|
62
|
-
VALUE eCurlErrSSLConnectError;
|
63
|
-
VALUE eCurlErrBadResume;
|
64
|
-
VALUE eCurlErrFileCouldntRead;
|
65
|
-
VALUE eCurlErrLDAPCouldntBind;
|
66
|
-
VALUE eCurlErrLDAPSearchFailed;
|
67
|
-
VALUE eCurlErrLibraryNotFound;
|
68
|
-
VALUE eCurlErrFunctionNotFound;
|
69
|
-
VALUE eCurlErrAbortedByCallback;
|
70
|
-
VALUE eCurlErrBadFunctionArgument;
|
71
|
-
VALUE eCurlErrBadCallingOrder;
|
72
|
-
VALUE eCurlErrInterfaceFailed;
|
73
|
-
VALUE eCurlErrBadPasswordEntered;
|
74
|
-
VALUE eCurlErrTooManyRedirects;
|
75
|
-
VALUE eCurlErrTelnetUnknownOption;
|
76
|
-
VALUE eCurlErrTelnetBadOptionSyntax;
|
77
|
-
VALUE eCurlErrObsolete;
|
78
|
-
VALUE eCurlErrSSLPeerCertificate;
|
79
|
-
VALUE eCurlErrGotNothing;
|
80
|
-
VALUE eCurlErrSSLEngineNotFound;
|
81
|
-
VALUE eCurlErrSSLEngineSetFailed;
|
82
|
-
VALUE eCurlErrSendError;
|
83
|
-
VALUE eCurlErrRecvError;
|
84
|
-
VALUE eCurlErrShareInUse;
|
85
|
-
VALUE eCurlErrSSLCertificate;
|
86
|
-
VALUE eCurlErrSSLCipher;
|
87
|
-
VALUE eCurlErrSSLCACertificate;
|
88
|
-
VALUE eCurlErrBadContentEncoding;
|
89
|
-
VALUE eCurlErrLDAPInvalidURL;
|
90
|
-
VALUE eCurlErrFileSizeExceeded;
|
91
|
-
VALUE eCurlErrFTPSSLFailed;
|
92
|
-
VALUE eCurlErrSendFailedRewind;
|
93
|
-
VALUE eCurlErrSSLEngineInitFailed;
|
94
|
-
VALUE eCurlErrLoginDenied;
|
95
|
-
VALUE eCurlErrTFTPNotFound;
|
96
|
-
VALUE eCurlErrTFTPPermission;
|
97
|
-
VALUE eCurlErrTFTPDiskFull;
|
98
|
-
VALUE eCurlErrTFTPIllegalOperation;
|
99
|
-
VALUE eCurlErrTFTPUnknownID;
|
100
|
-
VALUE eCurlErrTFTPFileExists;
|
101
|
-
VALUE eCurlErrTFTPNoSuchUser;
|
102
|
-
|
103
|
-
VALUE eCurlErrConvFailed;
|
104
|
-
VALUE eCurlErrConvReqd;
|
105
|
-
VALUE eCurlErrSSLCacertBadfile;
|
106
|
-
VALUE eCurlErrRemoteFileNotFound;
|
107
|
-
VALUE eCurlErrSSH;
|
108
|
-
VALUE eCurlErrSSLShutdownFailed;
|
109
|
-
VALUE eCurlErrAgain;
|
110
|
-
VALUE eCurlErrSSLCRLBadfile;
|
111
|
-
VALUE eCurlErrSSLIssuerError;
|
112
|
-
|
113
|
-
/* multi errors */
|
114
|
-
VALUE mCurlErrFailedInit;
|
115
|
-
VALUE mCurlErrCallMultiPerform;
|
116
|
-
VALUE mCurlErrBadHandle;
|
117
|
-
VALUE mCurlErrBadEasyHandle;
|
118
|
-
VALUE mCurlErrOutOfMemory;
|
119
|
-
VALUE mCurlErrInternalError;
|
120
|
-
VALUE mCurlErrBadSocket;
|
121
|
-
VALUE mCurlErrUnknownOption;
|
122
|
-
|
123
|
-
/* binding errors */
|
124
|
-
VALUE eCurlErrInvalidPostField;
|
125
|
-
|
126
|
-
|
127
|
-
VALUE rb_curl_easy_error(CURLcode code) {
|
128
|
-
VALUE exclz;
|
129
|
-
const char *exmsg = NULL;
|
130
|
-
VALUE results;
|
131
|
-
|
132
|
-
switch (code) {
|
133
|
-
case CURLE_OK: /* 0 */
|
134
|
-
exclz = eCurlErrOK;
|
135
|
-
break;
|
136
|
-
case CURLE_UNSUPPORTED_PROTOCOL: /* 1 */
|
137
|
-
exclz = eCurlErrUnsupportedProtocol;
|
138
|
-
break;
|
139
|
-
case CURLE_FAILED_INIT: /* 2 */
|
140
|
-
exclz = eCurlErrFailedInit;
|
141
|
-
break;
|
142
|
-
case CURLE_URL_MALFORMAT: /* 3 */
|
143
|
-
exclz = eCurlErrMalformedURL;
|
144
|
-
break;
|
145
|
-
#ifdef HAVE_CURLE_NOT_BUILT_IN
|
146
|
-
case CURLE_NOT_BUILT_IN: /* 4 - [was obsoleted in August 2007 for 7.17.0, reused in April 2011 for 7.21.5] */
|
147
|
-
exclz = eCurlErrNotBuiltIn;
|
148
|
-
break;
|
149
|
-
#else
|
150
|
-
case CURLE_URL_MALFORMAT_USER: /* 4 (NOT USED) */
|
151
|
-
exclz = eCurlErrMalformedURLUser;
|
152
|
-
break;
|
153
|
-
#endif
|
154
|
-
case CURLE_COULDNT_RESOLVE_PROXY: /* 5 */
|
155
|
-
exclz = eCurlErrProxyResolution;
|
156
|
-
break;
|
157
|
-
case CURLE_COULDNT_RESOLVE_HOST: /* 6 */
|
158
|
-
exclz = eCurlErrHostResolution;
|
159
|
-
break;
|
160
|
-
case CURLE_COULDNT_CONNECT: /* 7 */
|
161
|
-
exclz = eCurlErrConnectFailed;
|
162
|
-
break;
|
163
|
-
case CURLE_FTP_WEIRD_SERVER_REPLY: /* 8 */
|
164
|
-
exclz = eCurlErrFTPWierdReply;
|
165
|
-
break;
|
166
|
-
case CURLE_FTP_ACCESS_DENIED: /* 9 denied due to lack of access. */
|
167
|
-
exclz = eCurlErrFTPAccessDenied;
|
168
|
-
break;
|
169
|
-
case CURLE_FTP_USER_PASSWORD_INCORRECT: /* 10 */
|
170
|
-
exclz = eCurlErrFTPBadPassword;
|
171
|
-
break;
|
172
|
-
case CURLE_FTP_WEIRD_PASS_REPLY: /* 11 */
|
173
|
-
exclz = eCurlErrFTPWierdPassReply;
|
174
|
-
break;
|
175
|
-
case CURLE_FTP_WEIRD_USER_REPLY: /* 12 */
|
176
|
-
exclz = eCurlErrFTPWierdUserReply;
|
177
|
-
break;
|
178
|
-
case CURLE_FTP_WEIRD_PASV_REPLY: /* 13 */
|
179
|
-
exclz = eCurlErrFTPWierdPasvReply;
|
180
|
-
break;
|
181
|
-
case CURLE_FTP_WEIRD_227_FORMAT: /* 14 */
|
182
|
-
exclz = eCurlErrFTPWierd227Format;
|
183
|
-
break;
|
184
|
-
case CURLE_FTP_CANT_GET_HOST: /* 15 */
|
185
|
-
exclz = eCurlErrFTPCantGetHost;
|
186
|
-
break;
|
187
|
-
case CURLE_FTP_CANT_RECONNECT: /* 16 */
|
188
|
-
exclz = eCurlErrFTPCantReconnect;
|
189
|
-
break;
|
190
|
-
case CURLE_FTP_COULDNT_SET_BINARY: /* 17 */
|
191
|
-
exclz = eCurlErrFTPCouldntSetBinary;
|
192
|
-
break;
|
193
|
-
case CURLE_PARTIAL_FILE: /* 18 */
|
194
|
-
exclz = eCurlErrPartialFile;
|
195
|
-
break;
|
196
|
-
case CURLE_FTP_COULDNT_RETR_FILE: /* 19 */
|
197
|
-
exclz = eCurlErrFTPCouldntRetrFile;
|
198
|
-
break;
|
199
|
-
case CURLE_FTP_WRITE_ERROR: /* 20 */
|
200
|
-
exclz = eCurlErrFTPWrite;
|
201
|
-
break;
|
202
|
-
case CURLE_FTP_QUOTE_ERROR: /* 21 */
|
203
|
-
exclz = eCurlErrFTPQuote;
|
204
|
-
break;
|
205
|
-
case CURLE_HTTP_RETURNED_ERROR: /* 22 */
|
206
|
-
exclz = eCurlErrHTTPFailed;
|
207
|
-
break;
|
208
|
-
case CURLE_WRITE_ERROR: /* 23 */
|
209
|
-
exclz = eCurlErrWriteError;
|
210
|
-
break;
|
211
|
-
case CURLE_MALFORMAT_USER: /* 24 - NOT USED */
|
212
|
-
exclz = eCurlErrMalformedUser;
|
213
|
-
break;
|
214
|
-
case CURLE_FTP_COULDNT_STOR_FILE: /* 25 - failed FTP upload */
|
215
|
-
exclz = eCurlErrFTPCouldntStorFile;
|
216
|
-
break;
|
217
|
-
case CURLE_READ_ERROR: /* 26 - could open/read from file */
|
218
|
-
exclz = eCurlErrReadError;
|
219
|
-
break;
|
220
|
-
case CURLE_OUT_OF_MEMORY: /* 27 */
|
221
|
-
exclz = eCurlErrOutOfMemory;
|
222
|
-
break;
|
223
|
-
case CURLE_OPERATION_TIMEOUTED: /* 28 - the timeout time was reached */
|
224
|
-
exclz = eCurlErrTimeout;
|
225
|
-
break;
|
226
|
-
case CURLE_FTP_COULDNT_SET_ASCII: /* 29 - TYPE A failed */
|
227
|
-
exclz = eCurlErrFTPCouldntSetASCII;
|
228
|
-
break;
|
229
|
-
case CURLE_FTP_PORT_FAILED: /* 30 - FTP PORT operation failed */
|
230
|
-
exclz = eCurlErrFTPPortFailed;
|
231
|
-
break;
|
232
|
-
case CURLE_FTP_COULDNT_USE_REST: /* 31 - the REST command failed */
|
233
|
-
exclz = eCurlErrFTPCouldntUseRest;
|
234
|
-
break;
|
235
|
-
case CURLE_FTP_COULDNT_GET_SIZE: /* 32 - the SIZE command failed */
|
236
|
-
exclz = eCurlErrFTPCouldntGetSize;
|
237
|
-
break;
|
238
|
-
case CURLE_HTTP_RANGE_ERROR: /* 33 - RANGE "command" didn't work */
|
239
|
-
exclz = eCurlErrHTTPRange;
|
240
|
-
break;
|
241
|
-
case CURLE_HTTP_POST_ERROR: /* 34 */
|
242
|
-
exclz = eCurlErrHTTPPost;
|
243
|
-
break;
|
244
|
-
case CURLE_SSL_CONNECT_ERROR: /* 35 - wrong when connecting with SSL */
|
245
|
-
exclz = eCurlErrSSLConnectError;
|
246
|
-
break;
|
247
|
-
case CURLE_BAD_DOWNLOAD_RESUME: /* 36 - couldn't resume download */
|
248
|
-
exclz = eCurlErrBadResume;
|
249
|
-
break;
|
250
|
-
case CURLE_FILE_COULDNT_READ_FILE: /* 37 */
|
251
|
-
exclz = eCurlErrFileCouldntRead;
|
252
|
-
break;
|
253
|
-
case CURLE_LDAP_CANNOT_BIND: /* 38 */
|
254
|
-
exclz = eCurlErrLDAPCouldntBind;
|
255
|
-
break;
|
256
|
-
case CURLE_LDAP_SEARCH_FAILED: /* 39 */
|
257
|
-
exclz = eCurlErrLDAPSearchFailed;
|
258
|
-
break;
|
259
|
-
case CURLE_LIBRARY_NOT_FOUND: /* 40 */
|
260
|
-
exclz = eCurlErrLibraryNotFound;
|
261
|
-
break;
|
262
|
-
case CURLE_FUNCTION_NOT_FOUND: /* 41 */
|
263
|
-
exclz = eCurlErrFunctionNotFound;
|
264
|
-
break;
|
265
|
-
case CURLE_ABORTED_BY_CALLBACK: /* 42 */
|
266
|
-
exclz = eCurlErrAbortedByCallback;
|
267
|
-
break;
|
268
|
-
case CURLE_BAD_FUNCTION_ARGUMENT: /* 43 */
|
269
|
-
exclz = eCurlErrBadFunctionArgument;
|
270
|
-
break;
|
271
|
-
case CURLE_BAD_CALLING_ORDER: /* 44 - NOT USED */
|
272
|
-
exclz = eCurlErrBadCallingOrder;
|
273
|
-
break;
|
274
|
-
case CURLE_INTERFACE_FAILED: /* 45 - CURLOPT_INTERFACE failed */
|
275
|
-
exclz = eCurlErrInterfaceFailed;
|
276
|
-
break;
|
277
|
-
case CURLE_BAD_PASSWORD_ENTERED: /* 46 - NOT USED */
|
278
|
-
exclz = eCurlErrBadPasswordEntered;
|
279
|
-
break;
|
280
|
-
case CURLE_TOO_MANY_REDIRECTS: /* 47 - catch endless re-direct loops */
|
281
|
-
exclz = eCurlErrTooManyRedirects;
|
282
|
-
break;
|
283
|
-
case CURLE_UNKNOWN_TELNET_OPTION: /* 48 - User specified an unknown option */
|
284
|
-
exclz = eCurlErrTelnetUnknownOption;
|
285
|
-
break;
|
286
|
-
case CURLE_TELNET_OPTION_SYNTAX: /* 49 - Malformed telnet option */
|
287
|
-
exclz = eCurlErrTelnetBadOptionSyntax;
|
288
|
-
break;
|
289
|
-
#ifdef HAVE_CURLE_OBSOLETE
|
290
|
-
case CURLE_OBSOLETE: /* 50 - NOT USED */
|
291
|
-
exclz = eCurlErrObsolete;
|
292
|
-
break;
|
293
|
-
#endif
|
294
|
-
case CURLE_SSL_PEER_CERTIFICATE: /* 51 - peer's certificate wasn't ok */
|
295
|
-
exclz = eCurlErrSSLPeerCertificate;
|
296
|
-
break;
|
297
|
-
case CURLE_GOT_NOTHING: /* 52 - when this is a specific error */
|
298
|
-
exclz = eCurlErrGotNothing;
|
299
|
-
break;
|
300
|
-
case CURLE_SSL_ENGINE_NOTFOUND: /* 53 - SSL crypto engine not found */
|
301
|
-
exclz = eCurlErrSSLEngineNotFound;
|
302
|
-
break;
|
303
|
-
case CURLE_SSL_ENGINE_SETFAILED: /* 54 - can not set SSL crypto engine as default */
|
304
|
-
exclz = eCurlErrSSLEngineSetFailed;
|
305
|
-
break;
|
306
|
-
case CURLE_SEND_ERROR: /* 55 - failed sending network data */
|
307
|
-
exclz = eCurlErrSendError;
|
308
|
-
break;
|
309
|
-
case CURLE_RECV_ERROR: /* 56 - failure in receiving network data */
|
310
|
-
exclz = eCurlErrRecvError;
|
311
|
-
break;
|
312
|
-
case CURLE_SHARE_IN_USE: /* 57 - share is in use */
|
313
|
-
exclz = eCurlErrShareInUse;
|
314
|
-
break;
|
315
|
-
case CURLE_SSL_CERTPROBLEM: /* 58 - problem with the local certificate */
|
316
|
-
exclz = eCurlErrSSLCertificate;
|
317
|
-
break;
|
318
|
-
case CURLE_SSL_CIPHER: /* 59 - couldn't use specified cipher */
|
319
|
-
exclz = eCurlErrSSLCipher;
|
320
|
-
break;
|
321
|
-
case CURLE_SSL_CACERT: /* 60 - problem with the CA cert (path?) */
|
322
|
-
exclz = eCurlErrSSLCACertificate;
|
323
|
-
break;
|
324
|
-
case CURLE_BAD_CONTENT_ENCODING: /* 61 - Unrecognized transfer encoding */
|
325
|
-
exclz = eCurlErrBadContentEncoding;
|
326
|
-
break;
|
327
|
-
case CURLE_LDAP_INVALID_URL: /* 62 - Invalid LDAP URL */
|
328
|
-
exclz = eCurlErrLDAPInvalidURL;
|
329
|
-
break;
|
330
|
-
case CURLE_FILESIZE_EXCEEDED: /* 63 - Maximum file size exceeded */
|
331
|
-
exclz = eCurlErrFileSizeExceeded;
|
332
|
-
break;
|
333
|
-
case CURLE_FTP_SSL_FAILED: /* 64 - Requested FTP SSL level failed */
|
334
|
-
exclz = eCurlErrFTPSSLFailed;
|
335
|
-
break;
|
336
|
-
#ifdef HAVE_CURLE_SEND_FAIL_REWIND
|
337
|
-
case CURLE_SEND_FAIL_REWIND: /* 65 - Sending the data requires a rewind that failed */
|
338
|
-
exclz = eCurlErrSendFailedRewind;
|
339
|
-
break;
|
340
|
-
#endif
|
341
|
-
#ifdef HAVE_CURLE_SSL_ENGINE_INITFAILED
|
342
|
-
case CURLE_SSL_ENGINE_INITFAILED: /* 66 - failed to initialise ENGINE */
|
343
|
-
exclz = eCurlErrSSLEngineInitFailed;
|
344
|
-
break;
|
345
|
-
#endif
|
346
|
-
#ifdef HAVE_CURLE_LOGIN_DENIED
|
347
|
-
case CURLE_LOGIN_DENIED: /* 67 - user, password or similar was not accepted and we failed to login */
|
348
|
-
exclz = eCurlErrLoginDenied;
|
349
|
-
break;
|
350
|
-
#endif
|
351
|
-
|
352
|
-
// recent additions, may not be present in all supported versions
|
353
|
-
#ifdef HAVE_CURLE_TFTP_NOTFOUND
|
354
|
-
case CURLE_TFTP_NOTFOUND: /* 68 - file not found on server */
|
355
|
-
exclz = eCurlErrTFTPNotFound;
|
356
|
-
break;
|
357
|
-
#endif
|
358
|
-
#ifdef HAVE_CURLE_TFTP_PERM
|
359
|
-
case CURLE_TFTP_PERM: /* 69 - permission problem on server */
|
360
|
-
exclz = eCurlErrTFTPPermission;
|
361
|
-
break;
|
362
|
-
#endif
|
363
|
-
#ifdef HAVE_CURLE_TFTP_DISKFULL
|
364
|
-
case CURLE_TFTP_DISKFULL: /* 70 - out of disk space on server */
|
365
|
-
exclz = eCurlErrTFTPDiskFull;
|
366
|
-
break;
|
367
|
-
#endif
|
368
|
-
#ifdef HAVE_CURLE_TFTP_ILLEGAL
|
369
|
-
case CURLE_TFTP_ILLEGAL: /* 71 - Illegal TFTP operation */
|
370
|
-
exclz = eCurlErrTFTPIllegalOperation;
|
371
|
-
break;
|
372
|
-
#endif
|
373
|
-
#ifdef HAVE_CURLE_TFTP_UNKNOWNID
|
374
|
-
case CURLE_TFTP_UNKNOWNID: /* 72 - Unknown transfer ID */
|
375
|
-
exclz = eCurlErrTFTPUnknownID;
|
376
|
-
break;
|
377
|
-
#endif
|
378
|
-
#ifdef HAVE_CURLE_TFTP_EXISTS
|
379
|
-
case CURLE_TFTP_EXISTS: /* 73 - File already exists */
|
380
|
-
exclz = eCurlErrTFTPFileExists;
|
381
|
-
break;
|
382
|
-
#endif
|
383
|
-
#ifdef HAVE_CURLE_TFTP_NOSUCHUSER
|
384
|
-
case CURLE_TFTP_NOSUCHUSER: /* 74 - No such user */
|
385
|
-
exclz = eCurlErrTFTPNotFound;
|
386
|
-
break;
|
387
|
-
#endif
|
388
|
-
#ifdef HAVE_CURLE_CONV_FAILED
|
389
|
-
case CURLE_CONV_FAILED: /* 75 - conversion failed */
|
390
|
-
exclz = eCurlErrConvFailed;
|
391
|
-
break;
|
392
|
-
#endif
|
393
|
-
#ifdef HAVE_CURLE_CONV_REQD
|
394
|
-
case CURLE_CONV_REQD: /* 76 - caller must register conversion
|
395
|
-
callbacks using curl_easy_setopt options
|
396
|
-
CURLOPT_CONV_FROM_NETWORK_FUNCTION,
|
397
|
-
CURLOPT_CONV_TO_NETWORK_FUNCTION, and
|
398
|
-
CURLOPT_CONV_FROM_UTF8_FUNCTION */
|
399
|
-
exclz = eCurlErrConvReqd;
|
400
|
-
break;
|
401
|
-
#endif
|
402
|
-
#ifdef HAVE_CURLE_SSL_CACERT_BADFILE
|
403
|
-
case CURLE_SSL_CACERT_BADFILE: /* 77 - could not load CACERT file, missing
|
404
|
-
or wrong format */
|
405
|
-
exclz = eCurlErrSSLCacertBadfile;
|
406
|
-
break;
|
407
|
-
#endif
|
408
|
-
#ifdef HAVE_CURLE_REMOTE_FILE_NOT_FOUND
|
409
|
-
case CURLE_REMOTE_FILE_NOT_FOUND: /* 78 - remote file not found */
|
410
|
-
exclz = eCurlErrRemoteFileNotFound;
|
411
|
-
break;
|
412
|
-
#endif
|
413
|
-
#ifdef HAVE_CURLE_SSH
|
414
|
-
case CURLE_SSH: /* 79 - error from the SSH layer, somewhat
|
415
|
-
generic so the error message will be of
|
416
|
-
interest when this has happened */
|
417
|
-
exclz = eCurlErrSSH;
|
418
|
-
break;
|
419
|
-
#endif
|
420
|
-
#ifdef HAVE_CURLE_SSL_SHUTDOWN_FAILED
|
421
|
-
case CURLE_SSL_SHUTDOWN_FAILED: /* 80 - Failed to shut down the SSL
|
422
|
-
connection */
|
423
|
-
exclz = eCurlErrSSLShutdownFailed;
|
424
|
-
break;
|
425
|
-
#endif
|
426
|
-
#ifdef HAVE_CURLE_AGAIN
|
427
|
-
case CURLE_AGAIN: /* 81 - socket is not ready for send/recv,
|
428
|
-
wait till it's ready and try again (Added
|
429
|
-
in 7.18.2) */
|
430
|
-
exclz = eCurlErrAgain;
|
431
|
-
break;
|
432
|
-
#endif
|
433
|
-
#ifdef HAVE_CURLE_SSL_CRL_BADFILE
|
434
|
-
case CURLE_SSL_CRL_BADFILE: /* 82 - could not load CRL file, missing or
|
435
|
-
wrong format (Added in 7.19.0) */
|
436
|
-
exclz = eCurlErrSSLCRLBadfile;
|
437
|
-
break;
|
438
|
-
#endif
|
439
|
-
#ifdef HAVE_CURLE_SSL_ISSUER_ERROR
|
440
|
-
case CURLE_SSL_ISSUER_ERROR: /* 83 - Issuer check failed. (Added in
|
441
|
-
7.19.0) */
|
442
|
-
exclz = eCurlErrSSLIssuerError;
|
443
|
-
break;
|
444
|
-
#endif
|
445
|
-
default:
|
446
|
-
exclz = eCurlErrError;
|
447
|
-
exmsg = "Unknown error result from libcurl";
|
448
|
-
}
|
449
|
-
|
450
|
-
if (!exmsg) {
|
451
|
-
exmsg = curl_easy_strerror(code);
|
452
|
-
}
|
453
|
-
|
454
|
-
results = rb_ary_new2(2);
|
455
|
-
rb_ary_push(results, exclz);
|
456
|
-
rb_ary_push(results, rb_str_new2(exmsg));
|
457
|
-
return results;
|
458
|
-
}
|
459
|
-
/* rb_raise an approriate exception for the supplied CURLcode */
|
460
|
-
void raise_curl_easy_error_exception(CURLcode code) {
|
461
|
-
VALUE obj = rb_curl_easy_error(code);
|
462
|
-
rb_raise(rb_ary_entry(obj,0), RSTRING_PTR(rb_ary_entry(obj,1)));
|
463
|
-
}
|
464
|
-
VALUE rb_curl_multi_error(CURLMcode code) {
|
465
|
-
VALUE exclz;
|
466
|
-
const char *exmsg = NULL;
|
467
|
-
VALUE results;
|
468
|
-
|
469
|
-
switch(code) {
|
470
|
-
case CURLM_CALL_MULTI_PERFORM: /* -1 */
|
471
|
-
exclz = mCurlErrCallMultiPerform;
|
472
|
-
break;
|
473
|
-
case CURLM_BAD_HANDLE: /* 1 */
|
474
|
-
exclz = mCurlErrBadHandle;
|
475
|
-
break;
|
476
|
-
case CURLM_BAD_EASY_HANDLE: /* 2 */
|
477
|
-
exclz = mCurlErrBadEasyHandle;
|
478
|
-
break;
|
479
|
-
case CURLM_OUT_OF_MEMORY: /* 3 */
|
480
|
-
exclz = mCurlErrOutOfMemory;
|
481
|
-
break;
|
482
|
-
case CURLM_INTERNAL_ERROR: /* 4 */
|
483
|
-
exclz = mCurlErrInternalError;
|
484
|
-
break;
|
485
|
-
#if HAVE_CURLM_BAD_SOCKET
|
486
|
-
case CURLM_BAD_SOCKET: /* 5 */
|
487
|
-
exclz = mCurlErrBadSocket;
|
488
|
-
break;
|
489
|
-
#endif
|
490
|
-
#if HAVE_CURLM_UNKNOWN_OPTION
|
491
|
-
case CURLM_UNKNOWN_OPTION: /* 6 */
|
492
|
-
exclz = mCurlErrUnknownOption;
|
493
|
-
break;
|
494
|
-
#endif
|
495
|
-
default:
|
496
|
-
exclz = eCurlErrError;
|
497
|
-
exmsg = "Unknown error result from libcurl";
|
498
|
-
}
|
499
|
-
|
500
|
-
if (!exmsg) {
|
501
|
-
exmsg = curl_multi_strerror(code);
|
502
|
-
}
|
503
|
-
|
504
|
-
results = rb_ary_new2(2);
|
505
|
-
rb_ary_push(results, exclz);
|
506
|
-
rb_ary_push(results, rb_str_new2(exmsg));
|
507
|
-
|
508
|
-
return results;
|
509
|
-
}
|
510
|
-
void raise_curl_multi_error_exception(CURLMcode code) {
|
511
|
-
VALUE obj = rb_curl_multi_error(code);
|
512
|
-
rb_raise(rb_ary_entry(obj,0), RSTRING_PTR(rb_ary_entry(obj,1)));
|
513
|
-
}
|
514
|
-
|
515
|
-
void init_curb_errors() {
|
516
|
-
mCurlErr = rb_define_module_under(mCurl, "Err");
|
517
|
-
eCurlErrError = rb_define_class_under(mCurlErr, "CurlError", rb_eRuntimeError);
|
518
|
-
|
519
|
-
eCurlErrFTPError = rb_define_class_under(mCurlErr, "FTPError", eCurlErrError);
|
520
|
-
eCurlErrHTTPError = rb_define_class_under(mCurlErr, "HTTPError", eCurlErrError);
|
521
|
-
eCurlErrFileError = rb_define_class_under(mCurlErr, "FileError", eCurlErrError);
|
522
|
-
eCurlErrLDAPError = rb_define_class_under(mCurlErr, "LDAPError", eCurlErrError);
|
523
|
-
eCurlErrTelnetError = rb_define_class_under(mCurlErr, "TelnetError", eCurlErrError);
|
524
|
-
eCurlErrTFTPError = rb_define_class_under(mCurlErr, "TFTPError", eCurlErrError);
|
525
|
-
|
526
|
-
eCurlErrOK = rb_define_class_under(mCurlErr, "CurlOK", eCurlErrError);
|
527
|
-
eCurlErrUnsupportedProtocol = rb_define_class_under(mCurlErr, "UnsupportedProtocolError", eCurlErrError);
|
528
|
-
eCurlErrFailedInit = rb_define_class_under(mCurlErr, "FailedInitError", eCurlErrError);
|
529
|
-
eCurlErrMalformedURL = rb_define_class_under(mCurlErr, "MalformedURLError", eCurlErrError);
|
530
|
-
eCurlErrNotBuiltIn = rb_define_class_under(mCurlErr, "NotBuiltInError", eCurlErrError);
|
531
|
-
eCurlErrMalformedURLUser = rb_define_class_under(mCurlErr, "MalformedURLUserError", eCurlErrError);
|
532
|
-
eCurlErrProxyResolution = rb_define_class_under(mCurlErr, "ProxyResolutionError", eCurlErrError);
|
533
|
-
eCurlErrHostResolution = rb_define_class_under(mCurlErr, "HostResolutionError", eCurlErrError);
|
534
|
-
eCurlErrConnectFailed = rb_define_class_under(mCurlErr, "ConnectionFailedError", eCurlErrError);
|
535
|
-
|
536
|
-
eCurlErrFTPWierdReply = rb_define_class_under(mCurlErr, "WierdReplyError", eCurlErrFTPError);
|
537
|
-
eCurlErrFTPAccessDenied = rb_define_class_under(mCurlErr, "AccessDeniedError", eCurlErrFTPError);
|
538
|
-
eCurlErrFTPBadPassword = rb_define_class_under(mCurlErr, "BadBasswordError", eCurlErrFTPError);
|
539
|
-
eCurlErrFTPWierdPassReply = rb_define_class_under(mCurlErr, "WierdPassReplyError", eCurlErrFTPError);
|
540
|
-
eCurlErrFTPWierdUserReply = rb_define_class_under(mCurlErr, "WierdUserReplyError", eCurlErrFTPError);
|
541
|
-
eCurlErrFTPWierdPasvReply = rb_define_class_under(mCurlErr, "WierdPasvReplyError", eCurlErrFTPError);
|
542
|
-
eCurlErrFTPWierd227Format = rb_define_class_under(mCurlErr, "Wierd227FormatError", eCurlErrFTPError);
|
543
|
-
eCurlErrFTPCantGetHost = rb_define_class_under(mCurlErr, "CantGetHostError", eCurlErrFTPError);
|
544
|
-
eCurlErrFTPCantReconnect = rb_define_class_under(mCurlErr, "CantReconnectError", eCurlErrFTPError);
|
545
|
-
eCurlErrFTPCouldntSetBinary = rb_define_class_under(mCurlErr, "CouldntSetBinaryError", eCurlErrFTPError);
|
546
|
-
|
547
|
-
eCurlErrPartialFile = rb_define_class_under(mCurlErr, "PartialFileError", eCurlErrError);
|
548
|
-
|
549
|
-
eCurlErrFTPCouldntRetrFile = rb_define_class_under(mCurlErr, "CouldntRetrFileError", eCurlErrFTPError);
|
550
|
-
eCurlErrFTPWrite = rb_define_class_under(mCurlErr, "FTPWriteError", eCurlErrFTPError);
|
551
|
-
eCurlErrFTPQuote = rb_define_class_under(mCurlErr, "FTPQuoteError", eCurlErrFTPError);
|
552
|
-
|
553
|
-
eCurlErrHTTPFailed = rb_define_class_under(mCurlErr, "HTTPFailedError", eCurlErrHTTPError);
|
554
|
-
|
555
|
-
eCurlErrWriteError = rb_define_class_under(mCurlErr, "WriteError", eCurlErrError);
|
556
|
-
eCurlErrMalformedUser = rb_define_class_under(mCurlErr, "MalformedUserError", eCurlErrError);
|
557
|
-
|
558
|
-
eCurlErrFTPCouldntStorFile = rb_define_class_under(mCurlErr, "CouldntStorFileError", eCurlErrFTPError);
|
559
|
-
|
560
|
-
eCurlErrReadError = rb_define_class_under(mCurlErr, "ReadError", eCurlErrError);
|
561
|
-
eCurlErrOutOfMemory = rb_define_class_under(mCurlErr, "OutOfMemoryError", eCurlErrError);
|
562
|
-
eCurlErrTimeout = rb_define_class_under(mCurlErr, "TimeoutError", eCurlErrError);
|
563
|
-
|
564
|
-
eCurlErrFTPCouldntSetASCII = rb_define_class_under(mCurlErr, "CouldntSetASCIIError", eCurlErrFTPError);
|
565
|
-
eCurlErrFTPPortFailed = rb_define_class_under(mCurlErr, "PortFailedError", eCurlErrFTPError);
|
566
|
-
eCurlErrFTPCouldntUseRest = rb_define_class_under(mCurlErr, "CouldntUseRestError", eCurlErrFTPError);
|
567
|
-
eCurlErrFTPCouldntGetSize = rb_define_class_under(mCurlErr, "CouldntGetSizeError", eCurlErrFTPError);
|
568
|
-
|
569
|
-
eCurlErrHTTPRange = rb_define_class_under(mCurlErr, "HTTPRangeError", eCurlErrHTTPError);
|
570
|
-
eCurlErrHTTPPost = rb_define_class_under(mCurlErr, "HTTPPostError", eCurlErrHTTPError);
|
571
|
-
|
572
|
-
eCurlErrSSLConnectError = rb_define_class_under(mCurlErr, "SSLConnectError", eCurlErrError);
|
573
|
-
eCurlErrBadResume = rb_define_class_under(mCurlErr, "BadResumeError", eCurlErrError);
|
574
|
-
|
575
|
-
eCurlErrFileCouldntRead = rb_define_class_under(mCurlErr, "CouldntReadError", eCurlErrFileError);
|
576
|
-
|
577
|
-
eCurlErrLDAPCouldntBind = rb_define_class_under(mCurlErr, "CouldntBindError", eCurlErrLDAPError);
|
578
|
-
eCurlErrLDAPSearchFailed = rb_define_class_under(mCurlErr, "SearchFailedError", eCurlErrLDAPError);
|
579
|
-
|
580
|
-
eCurlErrLibraryNotFound = rb_define_class_under(mCurlErr, "LibraryNotFoundError", eCurlErrError);
|
581
|
-
eCurlErrFunctionNotFound = rb_define_class_under(mCurlErr, "FunctionNotFoundError", eCurlErrError);
|
582
|
-
eCurlErrAbortedByCallback = rb_define_class_under(mCurlErr, "AbortedByCallbackError", eCurlErrError);
|
583
|
-
eCurlErrBadFunctionArgument = rb_define_class_under(mCurlErr, "BadFunctionArgumentError", eCurlErrError);
|
584
|
-
eCurlErrBadCallingOrder = rb_define_class_under(mCurlErr, "BadCallingOrderError", eCurlErrError);
|
585
|
-
eCurlErrInterfaceFailed = rb_define_class_under(mCurlErr, "InterfaceFailedError", eCurlErrError);
|
586
|
-
|
587
|
-
eCurlErrBadPasswordEntered = rb_define_class_under(mCurlErr, "BadPasswordEnteredError", eCurlErrError);
|
588
|
-
eCurlErrTooManyRedirects = rb_define_class_under(mCurlErr, "TooManyRedirectsError", eCurlErrError);
|
589
|
-
|
590
|
-
eCurlErrTelnetUnknownOption = rb_define_class_under(mCurlErr, "UnknownOptionError", eCurlErrTelnetError);
|
591
|
-
eCurlErrTelnetBadOptionSyntax = rb_define_class_under(mCurlErr, "BadOptionSyntaxError", eCurlErrTelnetError);
|
592
|
-
|
593
|
-
eCurlErrObsolete = rb_define_class_under(mCurlErr, "ObsoleteError", eCurlErrError);
|
594
|
-
eCurlErrSSLPeerCertificate = rb_define_class_under(mCurlErr, "SSLPeerCertificateError", eCurlErrError);
|
595
|
-
eCurlErrGotNothing = rb_define_class_under(mCurlErr, "GotNothingError", eCurlErrError);
|
596
|
-
|
597
|
-
eCurlErrSSLEngineNotFound = rb_define_class_under(mCurlErr, "SSLEngineNotFoundError", eCurlErrError);
|
598
|
-
eCurlErrSSLEngineSetFailed = rb_define_class_under(mCurlErr, "SSLEngineSetFailedError", eCurlErrError);
|
599
|
-
|
600
|
-
eCurlErrSendError = rb_define_class_under(mCurlErr, "SendError", eCurlErrError);
|
601
|
-
eCurlErrRecvError = rb_define_class_under(mCurlErr, "RecvError", eCurlErrError);
|
602
|
-
eCurlErrShareInUse = rb_define_class_under(mCurlErr, "ShareInUseError", eCurlErrError);
|
603
|
-
|
604
|
-
eCurlErrConvFailed = rb_define_class_under(mCurlErr, "ConvFailed", eCurlErrError);
|
605
|
-
eCurlErrConvReqd = rb_define_class_under(mCurlErr, "ConvReqd", eCurlErrError);
|
606
|
-
eCurlErrRemoteFileNotFound = rb_define_class_under(mCurlErr, "RemoteFileNotFound", eCurlErrError);
|
607
|
-
eCurlErrAgain = rb_define_class_under(mCurlErr, "Again", eCurlErrError);
|
608
|
-
|
609
|
-
eCurlErrSSLCertificate = rb_define_class_under(mCurlErr, "SSLCertificateError", eCurlErrError);
|
610
|
-
eCurlErrSSLCipher = rb_define_class_under(mCurlErr, "SSLCypherError", eCurlErrError);
|
611
|
-
eCurlErrSSLCACertificate = rb_define_class_under(mCurlErr, "SSLCACertificateError", eCurlErrError);
|
612
|
-
eCurlErrBadContentEncoding = rb_define_class_under(mCurlErr, "BadContentEncodingError", eCurlErrError);
|
613
|
-
eCurlErrSSLCacertBadfile = rb_define_class_under(mCurlErr, "SSLCaertBadFile", eCurlErrError);
|
614
|
-
eCurlErrSSLCRLBadfile = rb_define_class_under(mCurlErr, "SSLCRLBadfile", eCurlErrError);
|
615
|
-
eCurlErrSSLIssuerError = rb_define_class_under(mCurlErr, "SSLIssuerError", eCurlErrError);
|
616
|
-
eCurlErrSSLShutdownFailed = rb_define_class_under(mCurlErr, "SSLShutdownFailed", eCurlErrError);
|
617
|
-
eCurlErrSSH = rb_define_class_under(mCurlErr, "SSH", eCurlErrError);
|
618
|
-
|
619
|
-
mCurlErrFailedInit = rb_define_class_under(mCurlErr, "MultiInitError", eCurlErrError);
|
620
|
-
mCurlErrCallMultiPerform = rb_define_class_under(mCurlErr, "MultiPerform", eCurlErrError);
|
621
|
-
mCurlErrBadHandle = rb_define_class_under(mCurlErr, "MultiBadHandle", eCurlErrError);
|
622
|
-
mCurlErrBadEasyHandle = rb_define_class_under(mCurlErr, "MultiBadEasyHandle", eCurlErrError);
|
623
|
-
mCurlErrOutOfMemory = rb_define_class_under(mCurlErr, "MultiOutOfMemory", eCurlErrError);
|
624
|
-
mCurlErrInternalError = rb_define_class_under(mCurlErr, "MultiInternalError", eCurlErrError);
|
625
|
-
mCurlErrBadSocket = rb_define_class_under(mCurlErr, "MultiBadSocket", eCurlErrError);
|
626
|
-
mCurlErrUnknownOption = rb_define_class_under(mCurlErr, "MultiUnknownOption", eCurlErrError);
|
627
|
-
|
628
|
-
eCurlErrLDAPInvalidURL = rb_define_class_under(mCurlErr, "InvalidLDAPURLError", eCurlErrLDAPError);
|
629
|
-
|
630
|
-
eCurlErrFileSizeExceeded = rb_define_class_under(mCurlErr, "FileSizeExceededError", eCurlErrError);
|
631
|
-
|
632
|
-
eCurlErrFTPSSLFailed = rb_define_class_under(mCurlErr, "FTPSSLFailed", eCurlErrFTPError);
|
633
|
-
|
634
|
-
eCurlErrSendFailedRewind = rb_define_class_under(mCurlErr, "SendFailedRewind", eCurlErrError);
|
635
|
-
eCurlErrSSLEngineInitFailed = rb_define_class_under(mCurlErr, "SSLEngineInitFailedError", eCurlErrError);
|
636
|
-
eCurlErrLoginDenied = rb_define_class_under(mCurlErr, "LoginDeniedError", eCurlErrError);
|
637
|
-
|
638
|
-
eCurlErrTFTPNotFound = rb_define_class_under(mCurlErr, "NotFoundError", eCurlErrTFTPError);
|
639
|
-
eCurlErrTFTPPermission = rb_define_class_under(mCurlErr, "PermissionError", eCurlErrTFTPError);
|
640
|
-
eCurlErrTFTPDiskFull = rb_define_class_under(mCurlErr, "DiskFullError", eCurlErrTFTPError);
|
641
|
-
eCurlErrTFTPIllegalOperation = rb_define_class_under(mCurlErr, "IllegalOperationError", eCurlErrTFTPError);
|
642
|
-
eCurlErrTFTPUnknownID = rb_define_class_under(mCurlErr, "UnknownIDError", eCurlErrTFTPError);
|
643
|
-
eCurlErrTFTPFileExists = rb_define_class_under(mCurlErr, "FileExistsError", eCurlErrTFTPError);
|
644
|
-
eCurlErrTFTPNoSuchUser = rb_define_class_under(mCurlErr, "NoSuchUserError", eCurlErrTFTPError);
|
645
|
-
|
646
|
-
eCurlErrInvalidPostField = rb_define_class_under(mCurlErr, "InvalidPostFieldError", eCurlErrError);
|
647
|
-
}
|
1
|
+
/* curb_errors.c - Ruby exception types for curl errors
|
2
|
+
* Copyright (c)2006 Ross Bamford.
|
3
|
+
* Licensed under the Ruby License. See LICENSE for details.
|
4
|
+
*
|
5
|
+
* $Id: curb_errors.c 10 2006-11-20 00:17:30Z roscopeco $
|
6
|
+
*/
|
7
|
+
#include "curb_errors.h"
|
8
|
+
|
9
|
+
extern VALUE mCurl;
|
10
|
+
|
11
|
+
#ifdef RDOC_NEVER_DEFINED
|
12
|
+
mCurl = rb_define_module("Curl");
|
13
|
+
#endif
|
14
|
+
|
15
|
+
/* base errors */
|
16
|
+
VALUE mCurlErr;
|
17
|
+
VALUE eCurlErrError;
|
18
|
+
VALUE eCurlErrFTPError;
|
19
|
+
VALUE eCurlErrHTTPError;
|
20
|
+
VALUE eCurlErrFileError;
|
21
|
+
VALUE eCurlErrLDAPError;
|
22
|
+
VALUE eCurlErrTelnetError;
|
23
|
+
VALUE eCurlErrTFTPError;
|
24
|
+
|
25
|
+
/* Specific libcurl errors */
|
26
|
+
VALUE eCurlErrOK; /* not really an error but a return code */
|
27
|
+
VALUE eCurlErrUnsupportedProtocol;
|
28
|
+
VALUE eCurlErrFailedInit;
|
29
|
+
VALUE eCurlErrMalformedURL;
|
30
|
+
VALUE eCurlErrMalformedURLUser;
|
31
|
+
VALUE eCurlErrNotBuiltIn;
|
32
|
+
VALUE eCurlErrProxyResolution;
|
33
|
+
VALUE eCurlErrHostResolution;
|
34
|
+
VALUE eCurlErrConnectFailed;
|
35
|
+
VALUE eCurlErrFTPWierdReply;
|
36
|
+
VALUE eCurlErrFTPAccessDenied;
|
37
|
+
VALUE eCurlErrFTPBadPassword;
|
38
|
+
VALUE eCurlErrFTPWierdPassReply;
|
39
|
+
VALUE eCurlErrFTPWierdUserReply;
|
40
|
+
VALUE eCurlErrFTPWierdPasvReply;
|
41
|
+
VALUE eCurlErrFTPWierd227Format;
|
42
|
+
VALUE eCurlErrFTPCantGetHost;
|
43
|
+
VALUE eCurlErrFTPCantReconnect;
|
44
|
+
VALUE eCurlErrFTPCouldntSetBinary;
|
45
|
+
VALUE eCurlErrPartialFile;
|
46
|
+
VALUE eCurlErrFTPCouldntRetrFile;
|
47
|
+
VALUE eCurlErrFTPWrite;
|
48
|
+
VALUE eCurlErrFTPQuote;
|
49
|
+
VALUE eCurlErrHTTPFailed;
|
50
|
+
VALUE eCurlErrWriteError;
|
51
|
+
VALUE eCurlErrMalformedUser;
|
52
|
+
VALUE eCurlErrFTPCouldntStorFile;
|
53
|
+
VALUE eCurlErrReadError;
|
54
|
+
VALUE eCurlErrOutOfMemory;
|
55
|
+
VALUE eCurlErrTimeout;
|
56
|
+
VALUE eCurlErrFTPCouldntSetASCII;
|
57
|
+
VALUE eCurlErrFTPPortFailed;
|
58
|
+
VALUE eCurlErrFTPCouldntUseRest;
|
59
|
+
VALUE eCurlErrFTPCouldntGetSize;
|
60
|
+
VALUE eCurlErrHTTPRange;
|
61
|
+
VALUE eCurlErrHTTPPost;
|
62
|
+
VALUE eCurlErrSSLConnectError;
|
63
|
+
VALUE eCurlErrBadResume;
|
64
|
+
VALUE eCurlErrFileCouldntRead;
|
65
|
+
VALUE eCurlErrLDAPCouldntBind;
|
66
|
+
VALUE eCurlErrLDAPSearchFailed;
|
67
|
+
VALUE eCurlErrLibraryNotFound;
|
68
|
+
VALUE eCurlErrFunctionNotFound;
|
69
|
+
VALUE eCurlErrAbortedByCallback;
|
70
|
+
VALUE eCurlErrBadFunctionArgument;
|
71
|
+
VALUE eCurlErrBadCallingOrder;
|
72
|
+
VALUE eCurlErrInterfaceFailed;
|
73
|
+
VALUE eCurlErrBadPasswordEntered;
|
74
|
+
VALUE eCurlErrTooManyRedirects;
|
75
|
+
VALUE eCurlErrTelnetUnknownOption;
|
76
|
+
VALUE eCurlErrTelnetBadOptionSyntax;
|
77
|
+
VALUE eCurlErrObsolete;
|
78
|
+
VALUE eCurlErrSSLPeerCertificate;
|
79
|
+
VALUE eCurlErrGotNothing;
|
80
|
+
VALUE eCurlErrSSLEngineNotFound;
|
81
|
+
VALUE eCurlErrSSLEngineSetFailed;
|
82
|
+
VALUE eCurlErrSendError;
|
83
|
+
VALUE eCurlErrRecvError;
|
84
|
+
VALUE eCurlErrShareInUse;
|
85
|
+
VALUE eCurlErrSSLCertificate;
|
86
|
+
VALUE eCurlErrSSLCipher;
|
87
|
+
VALUE eCurlErrSSLCACertificate;
|
88
|
+
VALUE eCurlErrBadContentEncoding;
|
89
|
+
VALUE eCurlErrLDAPInvalidURL;
|
90
|
+
VALUE eCurlErrFileSizeExceeded;
|
91
|
+
VALUE eCurlErrFTPSSLFailed;
|
92
|
+
VALUE eCurlErrSendFailedRewind;
|
93
|
+
VALUE eCurlErrSSLEngineInitFailed;
|
94
|
+
VALUE eCurlErrLoginDenied;
|
95
|
+
VALUE eCurlErrTFTPNotFound;
|
96
|
+
VALUE eCurlErrTFTPPermission;
|
97
|
+
VALUE eCurlErrTFTPDiskFull;
|
98
|
+
VALUE eCurlErrTFTPIllegalOperation;
|
99
|
+
VALUE eCurlErrTFTPUnknownID;
|
100
|
+
VALUE eCurlErrTFTPFileExists;
|
101
|
+
VALUE eCurlErrTFTPNoSuchUser;
|
102
|
+
|
103
|
+
VALUE eCurlErrConvFailed;
|
104
|
+
VALUE eCurlErrConvReqd;
|
105
|
+
VALUE eCurlErrSSLCacertBadfile;
|
106
|
+
VALUE eCurlErrRemoteFileNotFound;
|
107
|
+
VALUE eCurlErrSSH;
|
108
|
+
VALUE eCurlErrSSLShutdownFailed;
|
109
|
+
VALUE eCurlErrAgain;
|
110
|
+
VALUE eCurlErrSSLCRLBadfile;
|
111
|
+
VALUE eCurlErrSSLIssuerError;
|
112
|
+
|
113
|
+
/* multi errors */
|
114
|
+
VALUE mCurlErrFailedInit;
|
115
|
+
VALUE mCurlErrCallMultiPerform;
|
116
|
+
VALUE mCurlErrBadHandle;
|
117
|
+
VALUE mCurlErrBadEasyHandle;
|
118
|
+
VALUE mCurlErrOutOfMemory;
|
119
|
+
VALUE mCurlErrInternalError;
|
120
|
+
VALUE mCurlErrBadSocket;
|
121
|
+
VALUE mCurlErrUnknownOption;
|
122
|
+
|
123
|
+
/* binding errors */
|
124
|
+
VALUE eCurlErrInvalidPostField;
|
125
|
+
|
126
|
+
|
127
|
+
VALUE rb_curl_easy_error(CURLcode code) {
|
128
|
+
VALUE exclz;
|
129
|
+
const char *exmsg = NULL;
|
130
|
+
VALUE results;
|
131
|
+
|
132
|
+
switch (code) {
|
133
|
+
case CURLE_OK: /* 0 */
|
134
|
+
exclz = eCurlErrOK;
|
135
|
+
break;
|
136
|
+
case CURLE_UNSUPPORTED_PROTOCOL: /* 1 */
|
137
|
+
exclz = eCurlErrUnsupportedProtocol;
|
138
|
+
break;
|
139
|
+
case CURLE_FAILED_INIT: /* 2 */
|
140
|
+
exclz = eCurlErrFailedInit;
|
141
|
+
break;
|
142
|
+
case CURLE_URL_MALFORMAT: /* 3 */
|
143
|
+
exclz = eCurlErrMalformedURL;
|
144
|
+
break;
|
145
|
+
#ifdef HAVE_CURLE_NOT_BUILT_IN
|
146
|
+
case CURLE_NOT_BUILT_IN: /* 4 - [was obsoleted in August 2007 for 7.17.0, reused in April 2011 for 7.21.5] */
|
147
|
+
exclz = eCurlErrNotBuiltIn;
|
148
|
+
break;
|
149
|
+
#else
|
150
|
+
case CURLE_URL_MALFORMAT_USER: /* 4 (NOT USED) */
|
151
|
+
exclz = eCurlErrMalformedURLUser;
|
152
|
+
break;
|
153
|
+
#endif
|
154
|
+
case CURLE_COULDNT_RESOLVE_PROXY: /* 5 */
|
155
|
+
exclz = eCurlErrProxyResolution;
|
156
|
+
break;
|
157
|
+
case CURLE_COULDNT_RESOLVE_HOST: /* 6 */
|
158
|
+
exclz = eCurlErrHostResolution;
|
159
|
+
break;
|
160
|
+
case CURLE_COULDNT_CONNECT: /* 7 */
|
161
|
+
exclz = eCurlErrConnectFailed;
|
162
|
+
break;
|
163
|
+
case CURLE_FTP_WEIRD_SERVER_REPLY: /* 8 */
|
164
|
+
exclz = eCurlErrFTPWierdReply;
|
165
|
+
break;
|
166
|
+
case CURLE_FTP_ACCESS_DENIED: /* 9 denied due to lack of access. */
|
167
|
+
exclz = eCurlErrFTPAccessDenied;
|
168
|
+
break;
|
169
|
+
case CURLE_FTP_USER_PASSWORD_INCORRECT: /* 10 */
|
170
|
+
exclz = eCurlErrFTPBadPassword;
|
171
|
+
break;
|
172
|
+
case CURLE_FTP_WEIRD_PASS_REPLY: /* 11 */
|
173
|
+
exclz = eCurlErrFTPWierdPassReply;
|
174
|
+
break;
|
175
|
+
case CURLE_FTP_WEIRD_USER_REPLY: /* 12 */
|
176
|
+
exclz = eCurlErrFTPWierdUserReply;
|
177
|
+
break;
|
178
|
+
case CURLE_FTP_WEIRD_PASV_REPLY: /* 13 */
|
179
|
+
exclz = eCurlErrFTPWierdPasvReply;
|
180
|
+
break;
|
181
|
+
case CURLE_FTP_WEIRD_227_FORMAT: /* 14 */
|
182
|
+
exclz = eCurlErrFTPWierd227Format;
|
183
|
+
break;
|
184
|
+
case CURLE_FTP_CANT_GET_HOST: /* 15 */
|
185
|
+
exclz = eCurlErrFTPCantGetHost;
|
186
|
+
break;
|
187
|
+
case CURLE_FTP_CANT_RECONNECT: /* 16 */
|
188
|
+
exclz = eCurlErrFTPCantReconnect;
|
189
|
+
break;
|
190
|
+
case CURLE_FTP_COULDNT_SET_BINARY: /* 17 */
|
191
|
+
exclz = eCurlErrFTPCouldntSetBinary;
|
192
|
+
break;
|
193
|
+
case CURLE_PARTIAL_FILE: /* 18 */
|
194
|
+
exclz = eCurlErrPartialFile;
|
195
|
+
break;
|
196
|
+
case CURLE_FTP_COULDNT_RETR_FILE: /* 19 */
|
197
|
+
exclz = eCurlErrFTPCouldntRetrFile;
|
198
|
+
break;
|
199
|
+
case CURLE_FTP_WRITE_ERROR: /* 20 */
|
200
|
+
exclz = eCurlErrFTPWrite;
|
201
|
+
break;
|
202
|
+
case CURLE_FTP_QUOTE_ERROR: /* 21 */
|
203
|
+
exclz = eCurlErrFTPQuote;
|
204
|
+
break;
|
205
|
+
case CURLE_HTTP_RETURNED_ERROR: /* 22 */
|
206
|
+
exclz = eCurlErrHTTPFailed;
|
207
|
+
break;
|
208
|
+
case CURLE_WRITE_ERROR: /* 23 */
|
209
|
+
exclz = eCurlErrWriteError;
|
210
|
+
break;
|
211
|
+
case CURLE_MALFORMAT_USER: /* 24 - NOT USED */
|
212
|
+
exclz = eCurlErrMalformedUser;
|
213
|
+
break;
|
214
|
+
case CURLE_FTP_COULDNT_STOR_FILE: /* 25 - failed FTP upload */
|
215
|
+
exclz = eCurlErrFTPCouldntStorFile;
|
216
|
+
break;
|
217
|
+
case CURLE_READ_ERROR: /* 26 - could open/read from file */
|
218
|
+
exclz = eCurlErrReadError;
|
219
|
+
break;
|
220
|
+
case CURLE_OUT_OF_MEMORY: /* 27 */
|
221
|
+
exclz = eCurlErrOutOfMemory;
|
222
|
+
break;
|
223
|
+
case CURLE_OPERATION_TIMEOUTED: /* 28 - the timeout time was reached */
|
224
|
+
exclz = eCurlErrTimeout;
|
225
|
+
break;
|
226
|
+
case CURLE_FTP_COULDNT_SET_ASCII: /* 29 - TYPE A failed */
|
227
|
+
exclz = eCurlErrFTPCouldntSetASCII;
|
228
|
+
break;
|
229
|
+
case CURLE_FTP_PORT_FAILED: /* 30 - FTP PORT operation failed */
|
230
|
+
exclz = eCurlErrFTPPortFailed;
|
231
|
+
break;
|
232
|
+
case CURLE_FTP_COULDNT_USE_REST: /* 31 - the REST command failed */
|
233
|
+
exclz = eCurlErrFTPCouldntUseRest;
|
234
|
+
break;
|
235
|
+
case CURLE_FTP_COULDNT_GET_SIZE: /* 32 - the SIZE command failed */
|
236
|
+
exclz = eCurlErrFTPCouldntGetSize;
|
237
|
+
break;
|
238
|
+
case CURLE_HTTP_RANGE_ERROR: /* 33 - RANGE "command" didn't work */
|
239
|
+
exclz = eCurlErrHTTPRange;
|
240
|
+
break;
|
241
|
+
case CURLE_HTTP_POST_ERROR: /* 34 */
|
242
|
+
exclz = eCurlErrHTTPPost;
|
243
|
+
break;
|
244
|
+
case CURLE_SSL_CONNECT_ERROR: /* 35 - wrong when connecting with SSL */
|
245
|
+
exclz = eCurlErrSSLConnectError;
|
246
|
+
break;
|
247
|
+
case CURLE_BAD_DOWNLOAD_RESUME: /* 36 - couldn't resume download */
|
248
|
+
exclz = eCurlErrBadResume;
|
249
|
+
break;
|
250
|
+
case CURLE_FILE_COULDNT_READ_FILE: /* 37 */
|
251
|
+
exclz = eCurlErrFileCouldntRead;
|
252
|
+
break;
|
253
|
+
case CURLE_LDAP_CANNOT_BIND: /* 38 */
|
254
|
+
exclz = eCurlErrLDAPCouldntBind;
|
255
|
+
break;
|
256
|
+
case CURLE_LDAP_SEARCH_FAILED: /* 39 */
|
257
|
+
exclz = eCurlErrLDAPSearchFailed;
|
258
|
+
break;
|
259
|
+
case CURLE_LIBRARY_NOT_FOUND: /* 40 */
|
260
|
+
exclz = eCurlErrLibraryNotFound;
|
261
|
+
break;
|
262
|
+
case CURLE_FUNCTION_NOT_FOUND: /* 41 */
|
263
|
+
exclz = eCurlErrFunctionNotFound;
|
264
|
+
break;
|
265
|
+
case CURLE_ABORTED_BY_CALLBACK: /* 42 */
|
266
|
+
exclz = eCurlErrAbortedByCallback;
|
267
|
+
break;
|
268
|
+
case CURLE_BAD_FUNCTION_ARGUMENT: /* 43 */
|
269
|
+
exclz = eCurlErrBadFunctionArgument;
|
270
|
+
break;
|
271
|
+
case CURLE_BAD_CALLING_ORDER: /* 44 - NOT USED */
|
272
|
+
exclz = eCurlErrBadCallingOrder;
|
273
|
+
break;
|
274
|
+
case CURLE_INTERFACE_FAILED: /* 45 - CURLOPT_INTERFACE failed */
|
275
|
+
exclz = eCurlErrInterfaceFailed;
|
276
|
+
break;
|
277
|
+
case CURLE_BAD_PASSWORD_ENTERED: /* 46 - NOT USED */
|
278
|
+
exclz = eCurlErrBadPasswordEntered;
|
279
|
+
break;
|
280
|
+
case CURLE_TOO_MANY_REDIRECTS: /* 47 - catch endless re-direct loops */
|
281
|
+
exclz = eCurlErrTooManyRedirects;
|
282
|
+
break;
|
283
|
+
case CURLE_UNKNOWN_TELNET_OPTION: /* 48 - User specified an unknown option */
|
284
|
+
exclz = eCurlErrTelnetUnknownOption;
|
285
|
+
break;
|
286
|
+
case CURLE_TELNET_OPTION_SYNTAX: /* 49 - Malformed telnet option */
|
287
|
+
exclz = eCurlErrTelnetBadOptionSyntax;
|
288
|
+
break;
|
289
|
+
#ifdef HAVE_CURLE_OBSOLETE
|
290
|
+
case CURLE_OBSOLETE: /* 50 - NOT USED */
|
291
|
+
exclz = eCurlErrObsolete;
|
292
|
+
break;
|
293
|
+
#endif
|
294
|
+
case CURLE_SSL_PEER_CERTIFICATE: /* 51 - peer's certificate wasn't ok */
|
295
|
+
exclz = eCurlErrSSLPeerCertificate;
|
296
|
+
break;
|
297
|
+
case CURLE_GOT_NOTHING: /* 52 - when this is a specific error */
|
298
|
+
exclz = eCurlErrGotNothing;
|
299
|
+
break;
|
300
|
+
case CURLE_SSL_ENGINE_NOTFOUND: /* 53 - SSL crypto engine not found */
|
301
|
+
exclz = eCurlErrSSLEngineNotFound;
|
302
|
+
break;
|
303
|
+
case CURLE_SSL_ENGINE_SETFAILED: /* 54 - can not set SSL crypto engine as default */
|
304
|
+
exclz = eCurlErrSSLEngineSetFailed;
|
305
|
+
break;
|
306
|
+
case CURLE_SEND_ERROR: /* 55 - failed sending network data */
|
307
|
+
exclz = eCurlErrSendError;
|
308
|
+
break;
|
309
|
+
case CURLE_RECV_ERROR: /* 56 - failure in receiving network data */
|
310
|
+
exclz = eCurlErrRecvError;
|
311
|
+
break;
|
312
|
+
case CURLE_SHARE_IN_USE: /* 57 - share is in use */
|
313
|
+
exclz = eCurlErrShareInUse;
|
314
|
+
break;
|
315
|
+
case CURLE_SSL_CERTPROBLEM: /* 58 - problem with the local certificate */
|
316
|
+
exclz = eCurlErrSSLCertificate;
|
317
|
+
break;
|
318
|
+
case CURLE_SSL_CIPHER: /* 59 - couldn't use specified cipher */
|
319
|
+
exclz = eCurlErrSSLCipher;
|
320
|
+
break;
|
321
|
+
case CURLE_SSL_CACERT: /* 60 - problem with the CA cert (path?) */
|
322
|
+
exclz = eCurlErrSSLCACertificate;
|
323
|
+
break;
|
324
|
+
case CURLE_BAD_CONTENT_ENCODING: /* 61 - Unrecognized transfer encoding */
|
325
|
+
exclz = eCurlErrBadContentEncoding;
|
326
|
+
break;
|
327
|
+
case CURLE_LDAP_INVALID_URL: /* 62 - Invalid LDAP URL */
|
328
|
+
exclz = eCurlErrLDAPInvalidURL;
|
329
|
+
break;
|
330
|
+
case CURLE_FILESIZE_EXCEEDED: /* 63 - Maximum file size exceeded */
|
331
|
+
exclz = eCurlErrFileSizeExceeded;
|
332
|
+
break;
|
333
|
+
case CURLE_FTP_SSL_FAILED: /* 64 - Requested FTP SSL level failed */
|
334
|
+
exclz = eCurlErrFTPSSLFailed;
|
335
|
+
break;
|
336
|
+
#ifdef HAVE_CURLE_SEND_FAIL_REWIND
|
337
|
+
case CURLE_SEND_FAIL_REWIND: /* 65 - Sending the data requires a rewind that failed */
|
338
|
+
exclz = eCurlErrSendFailedRewind;
|
339
|
+
break;
|
340
|
+
#endif
|
341
|
+
#ifdef HAVE_CURLE_SSL_ENGINE_INITFAILED
|
342
|
+
case CURLE_SSL_ENGINE_INITFAILED: /* 66 - failed to initialise ENGINE */
|
343
|
+
exclz = eCurlErrSSLEngineInitFailed;
|
344
|
+
break;
|
345
|
+
#endif
|
346
|
+
#ifdef HAVE_CURLE_LOGIN_DENIED
|
347
|
+
case CURLE_LOGIN_DENIED: /* 67 - user, password or similar was not accepted and we failed to login */
|
348
|
+
exclz = eCurlErrLoginDenied;
|
349
|
+
break;
|
350
|
+
#endif
|
351
|
+
|
352
|
+
// recent additions, may not be present in all supported versions
|
353
|
+
#ifdef HAVE_CURLE_TFTP_NOTFOUND
|
354
|
+
case CURLE_TFTP_NOTFOUND: /* 68 - file not found on server */
|
355
|
+
exclz = eCurlErrTFTPNotFound;
|
356
|
+
break;
|
357
|
+
#endif
|
358
|
+
#ifdef HAVE_CURLE_TFTP_PERM
|
359
|
+
case CURLE_TFTP_PERM: /* 69 - permission problem on server */
|
360
|
+
exclz = eCurlErrTFTPPermission;
|
361
|
+
break;
|
362
|
+
#endif
|
363
|
+
#ifdef HAVE_CURLE_TFTP_DISKFULL
|
364
|
+
case CURLE_TFTP_DISKFULL: /* 70 - out of disk space on server */
|
365
|
+
exclz = eCurlErrTFTPDiskFull;
|
366
|
+
break;
|
367
|
+
#endif
|
368
|
+
#ifdef HAVE_CURLE_TFTP_ILLEGAL
|
369
|
+
case CURLE_TFTP_ILLEGAL: /* 71 - Illegal TFTP operation */
|
370
|
+
exclz = eCurlErrTFTPIllegalOperation;
|
371
|
+
break;
|
372
|
+
#endif
|
373
|
+
#ifdef HAVE_CURLE_TFTP_UNKNOWNID
|
374
|
+
case CURLE_TFTP_UNKNOWNID: /* 72 - Unknown transfer ID */
|
375
|
+
exclz = eCurlErrTFTPUnknownID;
|
376
|
+
break;
|
377
|
+
#endif
|
378
|
+
#ifdef HAVE_CURLE_TFTP_EXISTS
|
379
|
+
case CURLE_TFTP_EXISTS: /* 73 - File already exists */
|
380
|
+
exclz = eCurlErrTFTPFileExists;
|
381
|
+
break;
|
382
|
+
#endif
|
383
|
+
#ifdef HAVE_CURLE_TFTP_NOSUCHUSER
|
384
|
+
case CURLE_TFTP_NOSUCHUSER: /* 74 - No such user */
|
385
|
+
exclz = eCurlErrTFTPNotFound;
|
386
|
+
break;
|
387
|
+
#endif
|
388
|
+
#ifdef HAVE_CURLE_CONV_FAILED
|
389
|
+
case CURLE_CONV_FAILED: /* 75 - conversion failed */
|
390
|
+
exclz = eCurlErrConvFailed;
|
391
|
+
break;
|
392
|
+
#endif
|
393
|
+
#ifdef HAVE_CURLE_CONV_REQD
|
394
|
+
case CURLE_CONV_REQD: /* 76 - caller must register conversion
|
395
|
+
callbacks using curl_easy_setopt options
|
396
|
+
CURLOPT_CONV_FROM_NETWORK_FUNCTION,
|
397
|
+
CURLOPT_CONV_TO_NETWORK_FUNCTION, and
|
398
|
+
CURLOPT_CONV_FROM_UTF8_FUNCTION */
|
399
|
+
exclz = eCurlErrConvReqd;
|
400
|
+
break;
|
401
|
+
#endif
|
402
|
+
#ifdef HAVE_CURLE_SSL_CACERT_BADFILE
|
403
|
+
case CURLE_SSL_CACERT_BADFILE: /* 77 - could not load CACERT file, missing
|
404
|
+
or wrong format */
|
405
|
+
exclz = eCurlErrSSLCacertBadfile;
|
406
|
+
break;
|
407
|
+
#endif
|
408
|
+
#ifdef HAVE_CURLE_REMOTE_FILE_NOT_FOUND
|
409
|
+
case CURLE_REMOTE_FILE_NOT_FOUND: /* 78 - remote file not found */
|
410
|
+
exclz = eCurlErrRemoteFileNotFound;
|
411
|
+
break;
|
412
|
+
#endif
|
413
|
+
#ifdef HAVE_CURLE_SSH
|
414
|
+
case CURLE_SSH: /* 79 - error from the SSH layer, somewhat
|
415
|
+
generic so the error message will be of
|
416
|
+
interest when this has happened */
|
417
|
+
exclz = eCurlErrSSH;
|
418
|
+
break;
|
419
|
+
#endif
|
420
|
+
#ifdef HAVE_CURLE_SSL_SHUTDOWN_FAILED
|
421
|
+
case CURLE_SSL_SHUTDOWN_FAILED: /* 80 - Failed to shut down the SSL
|
422
|
+
connection */
|
423
|
+
exclz = eCurlErrSSLShutdownFailed;
|
424
|
+
break;
|
425
|
+
#endif
|
426
|
+
#ifdef HAVE_CURLE_AGAIN
|
427
|
+
case CURLE_AGAIN: /* 81 - socket is not ready for send/recv,
|
428
|
+
wait till it's ready and try again (Added
|
429
|
+
in 7.18.2) */
|
430
|
+
exclz = eCurlErrAgain;
|
431
|
+
break;
|
432
|
+
#endif
|
433
|
+
#ifdef HAVE_CURLE_SSL_CRL_BADFILE
|
434
|
+
case CURLE_SSL_CRL_BADFILE: /* 82 - could not load CRL file, missing or
|
435
|
+
wrong format (Added in 7.19.0) */
|
436
|
+
exclz = eCurlErrSSLCRLBadfile;
|
437
|
+
break;
|
438
|
+
#endif
|
439
|
+
#ifdef HAVE_CURLE_SSL_ISSUER_ERROR
|
440
|
+
case CURLE_SSL_ISSUER_ERROR: /* 83 - Issuer check failed. (Added in
|
441
|
+
7.19.0) */
|
442
|
+
exclz = eCurlErrSSLIssuerError;
|
443
|
+
break;
|
444
|
+
#endif
|
445
|
+
default:
|
446
|
+
exclz = eCurlErrError;
|
447
|
+
exmsg = "Unknown error result from libcurl";
|
448
|
+
}
|
449
|
+
|
450
|
+
if (!exmsg) {
|
451
|
+
exmsg = curl_easy_strerror(code);
|
452
|
+
}
|
453
|
+
|
454
|
+
results = rb_ary_new2(2);
|
455
|
+
rb_ary_push(results, exclz);
|
456
|
+
rb_ary_push(results, rb_str_new2(exmsg));
|
457
|
+
return results;
|
458
|
+
}
|
459
|
+
/* rb_raise an approriate exception for the supplied CURLcode */
|
460
|
+
void raise_curl_easy_error_exception(CURLcode code) {
|
461
|
+
VALUE obj = rb_curl_easy_error(code);
|
462
|
+
rb_raise(rb_ary_entry(obj,0), RSTRING_PTR(rb_ary_entry(obj,1)));
|
463
|
+
}
|
464
|
+
VALUE rb_curl_multi_error(CURLMcode code) {
|
465
|
+
VALUE exclz;
|
466
|
+
const char *exmsg = NULL;
|
467
|
+
VALUE results;
|
468
|
+
|
469
|
+
switch(code) {
|
470
|
+
case CURLM_CALL_MULTI_PERFORM: /* -1 */
|
471
|
+
exclz = mCurlErrCallMultiPerform;
|
472
|
+
break;
|
473
|
+
case CURLM_BAD_HANDLE: /* 1 */
|
474
|
+
exclz = mCurlErrBadHandle;
|
475
|
+
break;
|
476
|
+
case CURLM_BAD_EASY_HANDLE: /* 2 */
|
477
|
+
exclz = mCurlErrBadEasyHandle;
|
478
|
+
break;
|
479
|
+
case CURLM_OUT_OF_MEMORY: /* 3 */
|
480
|
+
exclz = mCurlErrOutOfMemory;
|
481
|
+
break;
|
482
|
+
case CURLM_INTERNAL_ERROR: /* 4 */
|
483
|
+
exclz = mCurlErrInternalError;
|
484
|
+
break;
|
485
|
+
#if HAVE_CURLM_BAD_SOCKET
|
486
|
+
case CURLM_BAD_SOCKET: /* 5 */
|
487
|
+
exclz = mCurlErrBadSocket;
|
488
|
+
break;
|
489
|
+
#endif
|
490
|
+
#if HAVE_CURLM_UNKNOWN_OPTION
|
491
|
+
case CURLM_UNKNOWN_OPTION: /* 6 */
|
492
|
+
exclz = mCurlErrUnknownOption;
|
493
|
+
break;
|
494
|
+
#endif
|
495
|
+
default:
|
496
|
+
exclz = eCurlErrError;
|
497
|
+
exmsg = "Unknown error result from libcurl";
|
498
|
+
}
|
499
|
+
|
500
|
+
if (!exmsg) {
|
501
|
+
exmsg = curl_multi_strerror(code);
|
502
|
+
}
|
503
|
+
|
504
|
+
results = rb_ary_new2(2);
|
505
|
+
rb_ary_push(results, exclz);
|
506
|
+
rb_ary_push(results, rb_str_new2(exmsg));
|
507
|
+
|
508
|
+
return results;
|
509
|
+
}
|
510
|
+
void raise_curl_multi_error_exception(CURLMcode code) {
|
511
|
+
VALUE obj = rb_curl_multi_error(code);
|
512
|
+
rb_raise(rb_ary_entry(obj,0), RSTRING_PTR(rb_ary_entry(obj,1)));
|
513
|
+
}
|
514
|
+
|
515
|
+
void init_curb_errors() {
|
516
|
+
mCurlErr = rb_define_module_under(mCurl, "Err");
|
517
|
+
eCurlErrError = rb_define_class_under(mCurlErr, "CurlError", rb_eRuntimeError);
|
518
|
+
|
519
|
+
eCurlErrFTPError = rb_define_class_under(mCurlErr, "FTPError", eCurlErrError);
|
520
|
+
eCurlErrHTTPError = rb_define_class_under(mCurlErr, "HTTPError", eCurlErrError);
|
521
|
+
eCurlErrFileError = rb_define_class_under(mCurlErr, "FileError", eCurlErrError);
|
522
|
+
eCurlErrLDAPError = rb_define_class_under(mCurlErr, "LDAPError", eCurlErrError);
|
523
|
+
eCurlErrTelnetError = rb_define_class_under(mCurlErr, "TelnetError", eCurlErrError);
|
524
|
+
eCurlErrTFTPError = rb_define_class_under(mCurlErr, "TFTPError", eCurlErrError);
|
525
|
+
|
526
|
+
eCurlErrOK = rb_define_class_under(mCurlErr, "CurlOK", eCurlErrError);
|
527
|
+
eCurlErrUnsupportedProtocol = rb_define_class_under(mCurlErr, "UnsupportedProtocolError", eCurlErrError);
|
528
|
+
eCurlErrFailedInit = rb_define_class_under(mCurlErr, "FailedInitError", eCurlErrError);
|
529
|
+
eCurlErrMalformedURL = rb_define_class_under(mCurlErr, "MalformedURLError", eCurlErrError);
|
530
|
+
eCurlErrNotBuiltIn = rb_define_class_under(mCurlErr, "NotBuiltInError", eCurlErrError);
|
531
|
+
eCurlErrMalformedURLUser = rb_define_class_under(mCurlErr, "MalformedURLUserError", eCurlErrError);
|
532
|
+
eCurlErrProxyResolution = rb_define_class_under(mCurlErr, "ProxyResolutionError", eCurlErrError);
|
533
|
+
eCurlErrHostResolution = rb_define_class_under(mCurlErr, "HostResolutionError", eCurlErrError);
|
534
|
+
eCurlErrConnectFailed = rb_define_class_under(mCurlErr, "ConnectionFailedError", eCurlErrError);
|
535
|
+
|
536
|
+
eCurlErrFTPWierdReply = rb_define_class_under(mCurlErr, "WierdReplyError", eCurlErrFTPError);
|
537
|
+
eCurlErrFTPAccessDenied = rb_define_class_under(mCurlErr, "AccessDeniedError", eCurlErrFTPError);
|
538
|
+
eCurlErrFTPBadPassword = rb_define_class_under(mCurlErr, "BadBasswordError", eCurlErrFTPError);
|
539
|
+
eCurlErrFTPWierdPassReply = rb_define_class_under(mCurlErr, "WierdPassReplyError", eCurlErrFTPError);
|
540
|
+
eCurlErrFTPWierdUserReply = rb_define_class_under(mCurlErr, "WierdUserReplyError", eCurlErrFTPError);
|
541
|
+
eCurlErrFTPWierdPasvReply = rb_define_class_under(mCurlErr, "WierdPasvReplyError", eCurlErrFTPError);
|
542
|
+
eCurlErrFTPWierd227Format = rb_define_class_under(mCurlErr, "Wierd227FormatError", eCurlErrFTPError);
|
543
|
+
eCurlErrFTPCantGetHost = rb_define_class_under(mCurlErr, "CantGetHostError", eCurlErrFTPError);
|
544
|
+
eCurlErrFTPCantReconnect = rb_define_class_under(mCurlErr, "CantReconnectError", eCurlErrFTPError);
|
545
|
+
eCurlErrFTPCouldntSetBinary = rb_define_class_under(mCurlErr, "CouldntSetBinaryError", eCurlErrFTPError);
|
546
|
+
|
547
|
+
eCurlErrPartialFile = rb_define_class_under(mCurlErr, "PartialFileError", eCurlErrError);
|
548
|
+
|
549
|
+
eCurlErrFTPCouldntRetrFile = rb_define_class_under(mCurlErr, "CouldntRetrFileError", eCurlErrFTPError);
|
550
|
+
eCurlErrFTPWrite = rb_define_class_under(mCurlErr, "FTPWriteError", eCurlErrFTPError);
|
551
|
+
eCurlErrFTPQuote = rb_define_class_under(mCurlErr, "FTPQuoteError", eCurlErrFTPError);
|
552
|
+
|
553
|
+
eCurlErrHTTPFailed = rb_define_class_under(mCurlErr, "HTTPFailedError", eCurlErrHTTPError);
|
554
|
+
|
555
|
+
eCurlErrWriteError = rb_define_class_under(mCurlErr, "WriteError", eCurlErrError);
|
556
|
+
eCurlErrMalformedUser = rb_define_class_under(mCurlErr, "MalformedUserError", eCurlErrError);
|
557
|
+
|
558
|
+
eCurlErrFTPCouldntStorFile = rb_define_class_under(mCurlErr, "CouldntStorFileError", eCurlErrFTPError);
|
559
|
+
|
560
|
+
eCurlErrReadError = rb_define_class_under(mCurlErr, "ReadError", eCurlErrError);
|
561
|
+
eCurlErrOutOfMemory = rb_define_class_under(mCurlErr, "OutOfMemoryError", eCurlErrError);
|
562
|
+
eCurlErrTimeout = rb_define_class_under(mCurlErr, "TimeoutError", eCurlErrError);
|
563
|
+
|
564
|
+
eCurlErrFTPCouldntSetASCII = rb_define_class_under(mCurlErr, "CouldntSetASCIIError", eCurlErrFTPError);
|
565
|
+
eCurlErrFTPPortFailed = rb_define_class_under(mCurlErr, "PortFailedError", eCurlErrFTPError);
|
566
|
+
eCurlErrFTPCouldntUseRest = rb_define_class_under(mCurlErr, "CouldntUseRestError", eCurlErrFTPError);
|
567
|
+
eCurlErrFTPCouldntGetSize = rb_define_class_under(mCurlErr, "CouldntGetSizeError", eCurlErrFTPError);
|
568
|
+
|
569
|
+
eCurlErrHTTPRange = rb_define_class_under(mCurlErr, "HTTPRangeError", eCurlErrHTTPError);
|
570
|
+
eCurlErrHTTPPost = rb_define_class_under(mCurlErr, "HTTPPostError", eCurlErrHTTPError);
|
571
|
+
|
572
|
+
eCurlErrSSLConnectError = rb_define_class_under(mCurlErr, "SSLConnectError", eCurlErrError);
|
573
|
+
eCurlErrBadResume = rb_define_class_under(mCurlErr, "BadResumeError", eCurlErrError);
|
574
|
+
|
575
|
+
eCurlErrFileCouldntRead = rb_define_class_under(mCurlErr, "CouldntReadError", eCurlErrFileError);
|
576
|
+
|
577
|
+
eCurlErrLDAPCouldntBind = rb_define_class_under(mCurlErr, "CouldntBindError", eCurlErrLDAPError);
|
578
|
+
eCurlErrLDAPSearchFailed = rb_define_class_under(mCurlErr, "SearchFailedError", eCurlErrLDAPError);
|
579
|
+
|
580
|
+
eCurlErrLibraryNotFound = rb_define_class_under(mCurlErr, "LibraryNotFoundError", eCurlErrError);
|
581
|
+
eCurlErrFunctionNotFound = rb_define_class_under(mCurlErr, "FunctionNotFoundError", eCurlErrError);
|
582
|
+
eCurlErrAbortedByCallback = rb_define_class_under(mCurlErr, "AbortedByCallbackError", eCurlErrError);
|
583
|
+
eCurlErrBadFunctionArgument = rb_define_class_under(mCurlErr, "BadFunctionArgumentError", eCurlErrError);
|
584
|
+
eCurlErrBadCallingOrder = rb_define_class_under(mCurlErr, "BadCallingOrderError", eCurlErrError);
|
585
|
+
eCurlErrInterfaceFailed = rb_define_class_under(mCurlErr, "InterfaceFailedError", eCurlErrError);
|
586
|
+
|
587
|
+
eCurlErrBadPasswordEntered = rb_define_class_under(mCurlErr, "BadPasswordEnteredError", eCurlErrError);
|
588
|
+
eCurlErrTooManyRedirects = rb_define_class_under(mCurlErr, "TooManyRedirectsError", eCurlErrError);
|
589
|
+
|
590
|
+
eCurlErrTelnetUnknownOption = rb_define_class_under(mCurlErr, "UnknownOptionError", eCurlErrTelnetError);
|
591
|
+
eCurlErrTelnetBadOptionSyntax = rb_define_class_under(mCurlErr, "BadOptionSyntaxError", eCurlErrTelnetError);
|
592
|
+
|
593
|
+
eCurlErrObsolete = rb_define_class_under(mCurlErr, "ObsoleteError", eCurlErrError);
|
594
|
+
eCurlErrSSLPeerCertificate = rb_define_class_under(mCurlErr, "SSLPeerCertificateError", eCurlErrError);
|
595
|
+
eCurlErrGotNothing = rb_define_class_under(mCurlErr, "GotNothingError", eCurlErrError);
|
596
|
+
|
597
|
+
eCurlErrSSLEngineNotFound = rb_define_class_under(mCurlErr, "SSLEngineNotFoundError", eCurlErrError);
|
598
|
+
eCurlErrSSLEngineSetFailed = rb_define_class_under(mCurlErr, "SSLEngineSetFailedError", eCurlErrError);
|
599
|
+
|
600
|
+
eCurlErrSendError = rb_define_class_under(mCurlErr, "SendError", eCurlErrError);
|
601
|
+
eCurlErrRecvError = rb_define_class_under(mCurlErr, "RecvError", eCurlErrError);
|
602
|
+
eCurlErrShareInUse = rb_define_class_under(mCurlErr, "ShareInUseError", eCurlErrError);
|
603
|
+
|
604
|
+
eCurlErrConvFailed = rb_define_class_under(mCurlErr, "ConvFailed", eCurlErrError);
|
605
|
+
eCurlErrConvReqd = rb_define_class_under(mCurlErr, "ConvReqd", eCurlErrError);
|
606
|
+
eCurlErrRemoteFileNotFound = rb_define_class_under(mCurlErr, "RemoteFileNotFound", eCurlErrError);
|
607
|
+
eCurlErrAgain = rb_define_class_under(mCurlErr, "Again", eCurlErrError);
|
608
|
+
|
609
|
+
eCurlErrSSLCertificate = rb_define_class_under(mCurlErr, "SSLCertificateError", eCurlErrError);
|
610
|
+
eCurlErrSSLCipher = rb_define_class_under(mCurlErr, "SSLCypherError", eCurlErrError);
|
611
|
+
eCurlErrSSLCACertificate = rb_define_class_under(mCurlErr, "SSLCACertificateError", eCurlErrError);
|
612
|
+
eCurlErrBadContentEncoding = rb_define_class_under(mCurlErr, "BadContentEncodingError", eCurlErrError);
|
613
|
+
eCurlErrSSLCacertBadfile = rb_define_class_under(mCurlErr, "SSLCaertBadFile", eCurlErrError);
|
614
|
+
eCurlErrSSLCRLBadfile = rb_define_class_under(mCurlErr, "SSLCRLBadfile", eCurlErrError);
|
615
|
+
eCurlErrSSLIssuerError = rb_define_class_under(mCurlErr, "SSLIssuerError", eCurlErrError);
|
616
|
+
eCurlErrSSLShutdownFailed = rb_define_class_under(mCurlErr, "SSLShutdownFailed", eCurlErrError);
|
617
|
+
eCurlErrSSH = rb_define_class_under(mCurlErr, "SSH", eCurlErrError);
|
618
|
+
|
619
|
+
mCurlErrFailedInit = rb_define_class_under(mCurlErr, "MultiInitError", eCurlErrError);
|
620
|
+
mCurlErrCallMultiPerform = rb_define_class_under(mCurlErr, "MultiPerform", eCurlErrError);
|
621
|
+
mCurlErrBadHandle = rb_define_class_under(mCurlErr, "MultiBadHandle", eCurlErrError);
|
622
|
+
mCurlErrBadEasyHandle = rb_define_class_under(mCurlErr, "MultiBadEasyHandle", eCurlErrError);
|
623
|
+
mCurlErrOutOfMemory = rb_define_class_under(mCurlErr, "MultiOutOfMemory", eCurlErrError);
|
624
|
+
mCurlErrInternalError = rb_define_class_under(mCurlErr, "MultiInternalError", eCurlErrError);
|
625
|
+
mCurlErrBadSocket = rb_define_class_under(mCurlErr, "MultiBadSocket", eCurlErrError);
|
626
|
+
mCurlErrUnknownOption = rb_define_class_under(mCurlErr, "MultiUnknownOption", eCurlErrError);
|
627
|
+
|
628
|
+
eCurlErrLDAPInvalidURL = rb_define_class_under(mCurlErr, "InvalidLDAPURLError", eCurlErrLDAPError);
|
629
|
+
|
630
|
+
eCurlErrFileSizeExceeded = rb_define_class_under(mCurlErr, "FileSizeExceededError", eCurlErrError);
|
631
|
+
|
632
|
+
eCurlErrFTPSSLFailed = rb_define_class_under(mCurlErr, "FTPSSLFailed", eCurlErrFTPError);
|
633
|
+
|
634
|
+
eCurlErrSendFailedRewind = rb_define_class_under(mCurlErr, "SendFailedRewind", eCurlErrError);
|
635
|
+
eCurlErrSSLEngineInitFailed = rb_define_class_under(mCurlErr, "SSLEngineInitFailedError", eCurlErrError);
|
636
|
+
eCurlErrLoginDenied = rb_define_class_under(mCurlErr, "LoginDeniedError", eCurlErrError);
|
637
|
+
|
638
|
+
eCurlErrTFTPNotFound = rb_define_class_under(mCurlErr, "NotFoundError", eCurlErrTFTPError);
|
639
|
+
eCurlErrTFTPPermission = rb_define_class_under(mCurlErr, "PermissionError", eCurlErrTFTPError);
|
640
|
+
eCurlErrTFTPDiskFull = rb_define_class_under(mCurlErr, "DiskFullError", eCurlErrTFTPError);
|
641
|
+
eCurlErrTFTPIllegalOperation = rb_define_class_under(mCurlErr, "IllegalOperationError", eCurlErrTFTPError);
|
642
|
+
eCurlErrTFTPUnknownID = rb_define_class_under(mCurlErr, "UnknownIDError", eCurlErrTFTPError);
|
643
|
+
eCurlErrTFTPFileExists = rb_define_class_under(mCurlErr, "FileExistsError", eCurlErrTFTPError);
|
644
|
+
eCurlErrTFTPNoSuchUser = rb_define_class_under(mCurlErr, "NoSuchUserError", eCurlErrTFTPError);
|
645
|
+
|
646
|
+
eCurlErrInvalidPostField = rb_define_class_under(mCurlErr, "InvalidPostFieldError", eCurlErrError);
|
647
|
+
}
|