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
19       error 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
49              resolved.
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
72              expects  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
78              default) 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
97              error 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
142              according 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
162              really  want  the  error buffer and read the message there as it
163              pinpoints 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
172              because 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_TELNET_OPTION_SYNTAX (49)
206              A telnet option string was Illegally formatted.
207
208       CURLE_GOT_NOTHING (52)
209              Nothing was returned from the  server,  and  under  the  circum‐
210              stances, getting nothing is considered an error.
211
212       CURLE_SSL_ENGINE_NOTFOUND (53)
213              The specified crypto engine wasn't found.
214
215       CURLE_SSL_ENGINE_SETFAILED (54)
216              Failed setting the selected SSL crypto engine as default!
217
218       CURLE_SEND_ERROR (55)
219              Failed sending network data.
220
221       CURLE_RECV_ERROR (56)
222              Failure with receiving network data.
223
224       CURLE_SSL_CERTPROBLEM (58)
225              problem with the local client certificate.
226
227       CURLE_SSL_CIPHER (59)
228              Couldn't use specified cipher.
229
230       CURLE_PEER_FAILED_VERIFICATION (60)
231              The  remote  server's SSL certificate or SSH md5 fingerprint was
232              deemed  not  OK.   This  error  code  has  been   unified   with
233              CURLE_SSL_CACERT since 7.62.0. Its previous value was 51.
234
235       CURLE_BAD_CONTENT_ENCODING (61)
236              Unrecognized transfer encoding.
237
238       CURLE_LDAP_INVALID_URL (62)
239              Invalid LDAP URL.
240
241       CURLE_FILESIZE_EXCEEDED (63)
242              Maximum file size exceeded.
243
244       CURLE_USE_SSL_FAILED (64)
245              Requested FTP SSL level failed.
246
247       CURLE_SEND_FAIL_REWIND (65)
248              When  doing  a  send  operation  curl  had to rewind the data to
249              retransmit, but the rewinding operation failed.
250
251       CURLE_SSL_ENGINE_INITFAILED (66)
252              Initiating the SSL Engine failed.
253
254       CURLE_LOGIN_DENIED (67)
255              The remote server denied curl to login (Added in 7.13.1)
256
257       CURLE_TFTP_NOTFOUND (68)
258              File not found on TFTP server.
259
260       CURLE_TFTP_PERM (69)
261              Permission problem on TFTP server.
262
263       CURLE_REMOTE_DISK_FULL (70)
264              Out of disk space on the server.
265
266       CURLE_TFTP_ILLEGAL (71)
267              Illegal TFTP operation.
268
269       CURLE_TFTP_UNKNOWNID (72)
270              Unknown TFTP transfer ID.
271
272       CURLE_REMOTE_FILE_EXISTS (73)
273              File already exists and will not be overwritten.
274
275       CURLE_TFTP_NOSUCHUSER (74)
276              This error should never be returned by  a  properly  functioning
277              TFTP server.
278
279       CURLE_CONV_FAILED (75)
280              Character conversion failed.
281
282       CURLE_CONV_REQD (76)
283              Caller must register conversion callbacks.
284
285       CURLE_SSL_CACERT_BADFILE (77)
286              Problem with reading the SSL CA cert (path? access rights?)
287
288       CURLE_REMOTE_FILE_NOT_FOUND (78)
289              The resource referenced in the URL does not exist.
290
291       CURLE_SSH (79)
292              An unspecified error occurred during the SSH session.
293
294       CURLE_SSL_SHUTDOWN_FAILED (80)
295              Failed to shut down the SSL connection.
296
297       CURLE_AGAIN (81)
298              Socket  is  not ready for send/recv wait till it's ready and try
299              again. This return code is only returned from  curl_easy_recv(3)
300              and curl_easy_send(3) (Added in 7.18.2)
301
302       CURLE_SSL_CRL_BADFILE (82)
303              Failed to load CRL file (Added in 7.19.0)
304
305       CURLE_SSL_ISSUER_ERROR (83)
306              Issuer check failed (Added in 7.19.0)
307
308       CURLE_FTP_PRET_FAILED (84)
309              The  FTP  server  does not understand the PRET command at all or
310              does not support the given argument. Be careful when using  CUR‐
311              LOPT_CUSTOMREQUEST(3),  a  custom LIST command will be sent with
312              PRET CMD before PASV as well. (Added in 7.20.0)
313
314       CURLE_RTSP_CSEQ_ERROR (85)
315              Mismatch of RTSP CSeq numbers.
316
317       CURLE_RTSP_SESSION_ERROR (86)
318              Mismatch of RTSP Session Identifiers.
319
320       CURLE_FTP_BAD_FILE_LIST (87)
321              Unable to parse FTP file list (during FTP wildcard downloading).
322
323       CURLE_CHUNK_FAILED (88)
324              Chunk callback reported error.
325
326       CURLE_NO_CONNECTION_AVAILABLE (89)
327              (For internal use only, will never be returned  by  libcurl)  No
328              connection  available,  the  session  will  be queued. (added in
329              7.30.0)
330
331       CURLE_SSL_PINNEDPUBKEYNOTMATCH (90)
332              Failed to match the pinned key specified with CURLOPT_PINNEDPUB‐
333              LICKEY(3).
334
335       CURLE_SSL_INVALIDCERTSTATUS (91)
336              Status  returned  failure when asked with CURLOPT_SSL_VERIFYSTA‐
337              TUS(3).
338
339       CURLE_HTTP2_STREAM (92)
340              Stream error in the HTTP/2 framing layer.
341
342       CURLE_RECURSIVE_API_CALL (93)
343              An API function was called from inside a callback.
344
345       CURLE_AUTH_ERROR (94)
346              An authentication function returned an error.
347
348       CURLE_HTTP3 (95)
349              A problem was detected in the HTTP/3  layer.  This  is  somewhat
350              generic  and  can  be one out of several problems, see the error
351              buffer for details.
352
353       CURLE_QUIC_CONNECT_ERROR (96)
354              QUIC connection error. This  error  may  be  caused  by  an  SSL
355              library error. QUIC is the protocol used for HTTP/3 transfers.
356
357       CURLE_OBSOLETE*
358              These  error  codes will never be returned. They were used in an
359              old libcurl version and are currently unused.
360

CURLMcode

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

CURLSHcode

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

CURLUcode

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

SEE ALSO

493       curl_easy_strerror(3), curl_multi_strerror(3),  curl_share_strerror(3),
494       CURLOPT_ERRORBUFFER(3), CURLOPT_VERBOSE(3), CURLOPT_DEBUGFUNCTION(3)
495
496
497
498libcurl 7.69.1                 December 24, 2019             libcurl-errors(3)
Impressum