1libcurl-errors(3)               libcurl errors               libcurl-errors(3)
2
3
4

NAME

6       libcurl-errors - error codes in libcurl
7

DESCRIPTION

9       This  man  page  includes  most,  if  not all, available error codes in
10       libcurl.  Why they occur and possibly what you can do to fix the  prob‐
11       lem are also included.
12

CURLcode

14       Almost  all "easy" interface functions return a CURLcode error code. No
15       matter  what,  using  the  curl_easy_setopt(3)  option   CURLOPT_ERROR‐
16       BUFFER(3)  is  a  good  idea as it will give you a human readable error
17       string that may offer more details about the cause of  the  error  than
18       just the error code.  curl_easy_strerror(3) can be called to get an er‐
19       ror string from a given CURLcode number.
20
21       CURLcode is one of the following:
22
23       CURLE_OK (0)
24              All fine. Proceed as usual.
25
26       CURLE_UNSUPPORTED_PROTOCOL (1)
27              The URL you passed to libcurl used a protocol that this  libcurl
28              does  not  support.  The  support might be a compile-time option
29              that you didn't use, it can be a misspelled protocol  string  or
30              just a protocol libcurl has no code for.
31
32       CURLE_FAILED_INIT (2)
33              Very  early  initialization code failed. This is likely to be an
34              internal error or problem, or a resource problem where something
35              fundamental couldn't get done at init time.
36
37       CURLE_URL_MALFORMAT (3)
38              The URL was not properly formatted.
39
40       CURLE_NOT_BUILT_IN (4)
41              A  requested  feature, protocol or option was not found built-in
42              in this libcurl due to a build-time decision. This means that  a
43              feature  or  option  was not enabled or explicitly disabled when
44              libcurl was built and in order to get it to function you have to
45              get a rebuilt libcurl.
46
47       CURLE_COULDNT_RESOLVE_PROXY (5)
48              Couldn't  resolve  proxy.  The given proxy host could not be re‐
49              solved.
50
51       CURLE_COULDNT_RESOLVE_HOST (6)
52              Couldn't resolve host. The given remote host was not resolved.
53
54       CURLE_COULDNT_CONNECT (7)
55              Failed to connect() to host or proxy.
56
57       CURLE_WEIRD_SERVER_REPLY (8)
58              The server sent data libcurl couldn't parse. This error code was
59              known as as CURLE_FTP_WEIRD_SERVER_REPLY before 7.51.0.
60
61       CURLE_REMOTE_ACCESS_DENIED (9)
62              We  were  denied  access  to the resource given in the URL.  For
63              FTP, this occurs while trying to change to the remote directory.
64
65       CURLE_FTP_ACCEPT_FAILED (10)
66              While waiting for the server to connect back when an active  FTP
67              session is used, an error code was sent over the control connec‐
68              tion or similar.
69
70       CURLE_FTP_WEIRD_PASS_REPLY (11)
71              After having sent the FTP password to the  server,  libcurl  ex‐
72              pects  a  proper  reply. This error code indicates that an unex‐
73              pected code was returned.
74
75       CURLE_FTP_ACCEPT_TIMEOUT (12)
76              During an active FTP session while waiting  for  the  server  to
77              connect,  the  CURLOPT_ACCEPTTIMEOUT_MS(3)  (or the internal de‐
78              fault) timeout expired.
79
80       CURLE_FTP_WEIRD_PASV_REPLY (13)
81              libcurl failed to get a sensible result back from the server  as
82              a  response  to  either  a PASV or a EPSV command. The server is
83              flawed.
84
85       CURLE_FTP_WEIRD_227_FORMAT (14)
86              FTP servers return a 227-line as a response to a  PASV  command.
87              If  libcurl fails to parse that line, this return code is passed
88              back.
89
90       CURLE_FTP_CANT_GET_HOST (15)
91              An internal failure to lookup the host used for the new  connec‐
92              tion.
93
94       CURLE_HTTP2 (16)
95              A problem was detected in the HTTP2 framing layer. This is some‐
96              what generic and can be one out of several problems, see the er‐
97              ror buffer for details.
98
99       CURLE_FTP_COULDNT_SET_TYPE (17)
100              Received an error when trying to set the transfer mode to binary
101              or ASCII.
102
103       CURLE_PARTIAL_FILE (18)
104              A file transfer was shorter or larger than expected.  This  hap‐
105              pens  when  the  server first reports an expected transfer size,
106              and then delivers data that doesn't match the  previously  given
107              size.
108
109       CURLE_FTP_COULDNT_RETR_FILE (19)
110              This was either a weird reply to a 'RETR' command or a zero byte
111              transfer complete.
112
113       CURLE_QUOTE_ERROR (21)
114              When sending custom "QUOTE" commands to the remote  server,  one
115              of  the  commands  returned an error code that was 400 or higher
116              (for FTP) or otherwise indicated unsuccessful completion of  the
117              command.
118
119       CURLE_HTTP_RETURNED_ERROR (22)
120              This  is  returned if CURLOPT_FAILONERROR(3) is set TRUE and the
121              HTTP server returns an error code that is >= 400.
122
123       CURLE_WRITE_ERROR (23)
124              An error occurred when writing received data to a local file, or
125              an error was returned to libcurl from a write callback.
126
127       CURLE_UPLOAD_FAILED (25)
128              Failed starting the upload. For FTP, the server typically denied
129              the STOR command. The error buffer usually contains the server's
130              explanation for this.
131
132       CURLE_READ_ERROR (26)
133              There was a problem reading a local file or an error returned by
134              the read callback.
135
136       CURLE_OUT_OF_MEMORY (27)
137              A memory allocation request failed. This is serious badness  and
138              things are severely screwed up if this ever occurs.
139
140       CURLE_OPERATION_TIMEDOUT (28)
141              Operation timeout. The specified time-out period was reached ac‐
142              cording to the conditions.
143
144       CURLE_FTP_PORT_FAILED (30)
145              The FTP PORT command returned error. This  mostly  happens  when
146              you  haven't specified a good enough address for libcurl to use.
147              See CURLOPT_FTPPORT(3).
148
149       CURLE_FTP_COULDNT_USE_REST (31)
150              The FTP REST command returned error. This should never happen if
151              the server is sane.
152
153       CURLE_RANGE_ERROR (33)
154              The server does not support or accept range requests.
155
156       CURLE_HTTP_POST_ERROR (34)
157              This  is  an odd error that mainly occurs due to internal confu‐
158              sion.
159
160       CURLE_SSL_CONNECT_ERROR (35)
161              A problem occurred somewhere in the SSL/TLS handshake.  You  re‐
162              ally want the error buffer and read the message there as it pin‐
163              points the problem slightly more. Could  be  certificates  (file
164              formats, paths, permissions), passwords, and others.
165
166       CURLE_BAD_DOWNLOAD_RESUME (36)
167              The  download  could not be resumed because the specified offset
168              was out of the file boundary.
169
170       CURLE_FILE_COULDNT_READ_FILE (37)
171              A file given with FILE:// couldn't be opened.  Most  likely  be‐
172              cause  the  file path doesn't identify an existing file. Did you
173              check file permissions?
174
175       CURLE_LDAP_CANNOT_BIND (38)
176              LDAP cannot bind. LDAP bind operation failed.
177
178       CURLE_LDAP_SEARCH_FAILED (39)
179              LDAP search failed.
180
181       CURLE_FUNCTION_NOT_FOUND (41)
182              Function not found. A required zlib function was not found.
183
184       CURLE_ABORTED_BY_CALLBACK (42)
185              Aborted by callback. A callback returned "abort" to libcurl.
186
187       CURLE_BAD_FUNCTION_ARGUMENT (43)
188              A function was called with a bad parameter.
189
190       CURLE_INTERFACE_FAILED (45)
191              Interface error. A specified outgoing  interface  could  not  be
192              used.  Set  which  interface  to  use  for outgoing connections'
193              source IP address with CURLOPT_INTERFACE(3).
194
195       CURLE_TOO_MANY_REDIRECTS (47)
196              Too many redirects. When following redirects,  libcurl  hit  the
197              maximum amount.  Set your limit with CURLOPT_MAXREDIRS(3).
198
199       CURLE_UNKNOWN_OPTION (48)
200              An  option  passed  to libcurl is not recognized/known. Refer to
201              the appropriate documentation. This is most likely a problem  in
202              the  program  that  uses libcurl. The error buffer might contain
203              more specific information about which exact option it concerns.
204
205       CURLE_SETOPT_OPTION_SYNTAX (49)
206              An option passed in to a setopt was wrongly formatted. See error
207              message for details about what option.
208
209       CURLE_GOT_NOTHING (52)
210              Nothing  was  returned  from  the  server, and under the circum‐
211              stances, getting nothing is considered an error.
212
213       CURLE_SSL_ENGINE_NOTFOUND (53)
214              The specified crypto engine wasn't found.
215
216       CURLE_SSL_ENGINE_SETFAILED (54)
217              Failed setting the selected SSL crypto engine as default!
218
219       CURLE_SEND_ERROR (55)
220              Failed sending network data.
221
222       CURLE_RECV_ERROR (56)
223              Failure with receiving network data.
224
225       CURLE_SSL_CERTPROBLEM (58)
226              problem with the local client certificate.
227
228       CURLE_SSL_CIPHER (59)
229              Couldn't use specified cipher.
230
231       CURLE_PEER_FAILED_VERIFICATION (60)
232              The remote server's SSL certificate or SSH md5  fingerprint  was
233              deemed   not   OK.   This  error  code  has  been  unified  with
234              CURLE_SSL_CACERT since 7.62.0. Its previous value was 51.
235
236       CURLE_BAD_CONTENT_ENCODING (61)
237              Unrecognized transfer encoding.
238
239       CURLE_LDAP_INVALID_URL (62)
240              Invalid LDAP URL.
241
242       CURLE_FILESIZE_EXCEEDED (63)
243              Maximum file size exceeded.
244
245       CURLE_USE_SSL_FAILED (64)
246              Requested FTP SSL level failed.
247
248       CURLE_SEND_FAIL_REWIND (65)
249              When doing a send operation curl had to rewind the data  to  re‐
250              transmit, but the rewinding operation failed.
251
252       CURLE_SSL_ENGINE_INITFAILED (66)
253              Initiating the SSL Engine failed.
254
255       CURLE_LOGIN_DENIED (67)
256              The remote server denied curl to login (Added in 7.13.1)
257
258       CURLE_TFTP_NOTFOUND (68)
259              File not found on TFTP server.
260
261       CURLE_TFTP_PERM (69)
262              Permission problem on TFTP server.
263
264       CURLE_REMOTE_DISK_FULL (70)
265              Out of disk space on the server.
266
267       CURLE_TFTP_ILLEGAL (71)
268              Illegal TFTP operation.
269
270       CURLE_TFTP_UNKNOWNID (72)
271              Unknown TFTP transfer ID.
272
273       CURLE_REMOTE_FILE_EXISTS (73)
274              File already exists and will not be overwritten.
275
276       CURLE_TFTP_NOSUCHUSER (74)
277              This  error  should  never be returned by a properly functioning
278              TFTP server.
279
280       CURLE_CONV_FAILED (75)
281              Character conversion failed.
282
283       CURLE_CONV_REQD (76)
284              Caller must register conversion callbacks.
285
286       CURLE_SSL_CACERT_BADFILE (77)
287              Problem with reading the SSL CA cert (path? access rights?)
288
289       CURLE_REMOTE_FILE_NOT_FOUND (78)
290              The resource referenced in the URL does not exist.
291
292       CURLE_SSH (79)
293              An unspecified error occurred during the SSH session.
294
295       CURLE_SSL_SHUTDOWN_FAILED (80)
296              Failed to shut down the SSL connection.
297
298       CURLE_AGAIN (81)
299              Socket is not ready for send/recv wait till it's ready  and  try
300              again.  This return code is only returned from curl_easy_recv(3)
301              and curl_easy_send(3) (Added in 7.18.2)
302
303       CURLE_SSL_CRL_BADFILE (82)
304              Failed to load CRL file (Added in 7.19.0)
305
306       CURLE_SSL_ISSUER_ERROR (83)
307              Issuer check failed (Added in 7.19.0)
308
309       CURLE_FTP_PRET_FAILED (84)
310              The FTP server does not understand the PRET command  at  all  or
311              does  not support the given argument. Be careful when using CUR‐
312              LOPT_CUSTOMREQUEST(3), a custom LIST command will be  sent  with
313              PRET CMD before PASV as well. (Added in 7.20.0)
314
315       CURLE_RTSP_CSEQ_ERROR (85)
316              Mismatch of RTSP CSeq numbers.
317
318       CURLE_RTSP_SESSION_ERROR (86)
319              Mismatch of RTSP Session Identifiers.
320
321       CURLE_FTP_BAD_FILE_LIST (87)
322              Unable to parse FTP file list (during FTP wildcard downloading).
323
324       CURLE_CHUNK_FAILED (88)
325              Chunk callback reported error.
326
327       CURLE_NO_CONNECTION_AVAILABLE (89)
328              (For  internal  use  only, will never be returned by libcurl) No
329              connection available, the session  will  be  queued.  (added  in
330              7.30.0)
331
332       CURLE_SSL_PINNEDPUBKEYNOTMATCH (90)
333              Failed to match the pinned key specified with CURLOPT_PINNEDPUB‐
334              LICKEY(3).
335
336       CURLE_SSL_INVALIDCERTSTATUS (91)
337              Status returned failure when asked  with  CURLOPT_SSL_VERIFYSTA‐
338              TUS(3).
339
340       CURLE_HTTP2_STREAM (92)
341              Stream error in the HTTP/2 framing layer.
342
343       CURLE_RECURSIVE_API_CALL (93)
344              An API function was called from inside a callback.
345
346       CURLE_AUTH_ERROR (94)
347              An authentication function returned an error.
348
349       CURLE_HTTP3 (95)
350              A  problem  was  detected  in the HTTP/3 layer. This is somewhat
351              generic and can be one out of several problems,  see  the  error
352              buffer for details.
353
354       CURLE_QUIC_CONNECT_ERROR (96)
355              QUIC  connection  error.  This error may be caused by an SSL li‐
356              brary error. QUIC is the protocol used for HTTP/3 transfers.
357
358       CURLE_SSL_CLIENTCERT (98)
359              SSL Client Certificate required.
360
361       CURLE_OBSOLETE*
362              These error codes will never be returned. They were used  in  an
363              old libcurl version and are currently unused.
364

CURLMcode

366       This  is the generic return code used by functions in the libcurl multi
367       interface. Also consider curl_multi_strerror(3).
368
369       CURLM_CALL_MULTI_PERFORM (-1)
370              This  is  not  really  an  error.  It  means  you  should   call
371              curl_multi_perform(3) again without doing select() or similar in
372              between. Before version 7.20.0 (released  on  February  9  2010)
373              this  could  be  returned by curl_multi_perform(3), but in later
374              versions this return code is never used.
375
376       CURLM_CALL_MULTI_SOCKET (-1)
377              An alias for CURLM_CALL_MULTI_PERFORM. Never returned by  modern
378              libcurl versions.
379
380       CURLM_OK (0)
381              Things are fine.
382
383       CURLM_BAD_HANDLE (1)
384              The passed-in handle is not a valid CURLM handle.
385
386       CURLM_BAD_EASY_HANDLE (2)
387              An  easy  handle was not good/valid. It could mean that it isn't
388              an easy handle at all, or possibly that the handle already is in
389              use by this or another multi handle.
390
391       CURLM_OUT_OF_MEMORY (3)
392              You are doomed.
393
394       CURLM_INTERNAL_ERROR (4)
395              This  can  only be returned if libcurl bugs. Please report it to
396              us!
397
398       CURLM_BAD_SOCKET (5)
399              The passed-in socket is not a valid  one  that  libcurl  already
400              knows about.  (Added in 7.15.4)
401
402       CURLM_UNKNOWN_OPTION (6)
403              curl_multi_setopt() with unsupported option (Added in 7.15.4)
404
405       CURLM_ADDED_ALREADY (7)
406              An  easy handle already added to a multi handle was attempted to
407              get added a second time. (Added in 7.32.1)
408
409       CURLM_RECURSIVE_API_CALL (8)
410              An API function was called from inside a callback.
411
412       CURLM_WAKEUP_FAILURE (9)
413              Wakeup is unavailable or failed.
414
415       CURLM_BAD_FUNCTION_ARGUMENT (10)
416              A function was called with a bad parameter.
417

CURLSHcode

419       The "share" interface will return a CURLSHcode to indicate when an  er‐
420       ror has occurred.  Also consider curl_share_strerror(3).
421
422       CURLSHE_OK (0)
423              All fine. Proceed as usual.
424
425       CURLSHE_BAD_OPTION (1)
426              An invalid option was passed to the function.
427
428       CURLSHE_IN_USE (2)
429              The share object is currently in use.
430
431       CURLSHE_INVALID (3)
432              An invalid share object was passed to the function.
433
434       CURLSHE_NOMEM (4)
435              Not enough memory was available.  (Added in 7.12.0)
436
437       CURLSHE_NOT_BUILT_IN (5)
438              The  requested sharing could not be done because the library you
439              use don't  have  that  particular  feature  enabled.  (Added  in
440              7.23.0)
441

CURLUcode

443       CURLUE_BAD_HANDLE (1)
444              An invalid CURLU pointer was passed as argument.
445
446       CURLUE_BAD_PARTPOINTER (2)
447              An invalid 'part' argument was passed as argument.
448
449       CURLUE_MALFORMED_INPUT (3)
450              A malformed input was passed to a URL API function.
451
452       CURLUE_BAD_PORT_NUMBER (4)
453              The port number was not a decimal number between 0 and 65535.
454
455       CURLUE_UNSUPPORTED_SCHEME (5)
456              This libcurl build doesn't support the given URL scheme.
457
458       CURLUE_URLDECODE (6)
459              URL decode error, most likely because of rubbish in the input.
460
461       CURLUE_OUT_OF_MEMORY (7)
462              A memory function failed.
463
464       CURLUE_USER_NOT_ALLOWED (8)
465              Credentials was passed in the URL when prohibited.
466
467       CURLUE_UNKNOWN_PART (9)
468              An unknown part ID was passed to a URL API function.
469
470       CURLUE_NO_SCHEME (10)
471              There is no scheme part in the URL.
472
473       CURLUE_NO_USER (11)
474              There is no user part in the URL.
475
476       CURLUE_NO_PASSWORD (12)
477              There is no password part in the URL.
478
479       CURLUE_NO_OPTIONS (13)
480              There is no options part in the URL.
481
482       CURLUE_NO_HOST (14)
483              There is no host part in the URL.
484
485       CURLUE_NO_PORT (15)
486              There is no port part in the URL.
487
488       CURLUE_NO_QUERY (16)
489              There is no query part in the URL.
490
491       CURLUE_NO_FRAGMENT (17)
492              There is no fragment part in the URL.
493

SEE ALSO

495       curl_easy_strerror(3),  curl_multi_strerror(3), curl_share_strerror(3),
496       CURLOPT_ERRORBUFFER(3), CURLOPT_VERBOSE(3), CURLOPT_DEBUGFUNCTION(3)
497
498
499
500libcurl 7.79.1                  August 23, 2021              libcurl-errors(3)
Impressum