Codebase list libetpan / 418f7c3
New upstream version 1.9.1 Ricardo Mones 5 years ago
20 changed file(s) with 123 addition(s) and 244 deletion(s). Raw diff Collapse all Expand all
3737 #endif
3838
3939 #ifndef LIBETPAN_VERSION_MINOR
40 #define LIBETPAN_VERSION_MINOR 8
40 #define LIBETPAN_VERSION_MINOR 9
4141 #endif
4242
4343 #ifndef LIBETPAN_REENTRANT
4646 #endif
4747
4848 #ifndef LIBETPAN_API_CURRENT
49 #define LIBETPAN_API_CURRENT 21
49 #define LIBETPAN_API_CURRENT 22
5050 #endif
5151
5252 #ifndef LIBETPAN_API_REVISION
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for libetpan 1.8.0.
2 # Generated by GNU Autoconf 2.69 for libetpan 1.9.1.
33 #
44 # Report bugs to <libetpan-devel@lists.sourceforge.net>.
55 #
589589 # Identity of this package.
590590 PACKAGE_NAME='libetpan'
591591 PACKAGE_TARNAME='libetpan'
592 PACKAGE_VERSION='1.8.0'
593 PACKAGE_STRING='libetpan 1.8.0'
592 PACKAGE_VERSION='1.9.1'
593 PACKAGE_STRING='libetpan 1.9.1'
594594 PACKAGE_BUGREPORT='libetpan-devel@lists.sourceforge.net'
595595 PACKAGE_URL=''
596596
13811381 # Omit some internal or obsolete options to make the list less imposing.
13821382 # This message is too long to be a string in the A/UX 3.1 sh.
13831383 cat <<_ACEOF
1384 \`configure' configures libetpan 1.8.0 to adapt to many kinds of systems.
1384 \`configure' configures libetpan 1.9.1 to adapt to many kinds of systems.
13851385
13861386 Usage: $0 [OPTION]... [VAR=VALUE]...
13871387
14521452
14531453 if test -n "$ac_init_help"; then
14541454 case $ac_init_help in
1455 short | recursive ) echo "Configuration of libetpan 1.8.0:";;
1455 short | recursive ) echo "Configuration of libetpan 1.9.1:";;
14561456 esac
14571457 cat <<\_ACEOF
14581458
15881588 test -n "$ac_init_help" && exit $ac_status
15891589 if $ac_init_version; then
15901590 cat <<\_ACEOF
1591 libetpan configure 1.8.0
1591 libetpan configure 1.9.1
15921592 generated by GNU Autoconf 2.69
15931593
15941594 Copyright (C) 2012 Free Software Foundation, Inc.
20782078 This file contains any messages produced by compilers while
20792079 running configure, to aid debugging if configure makes a mistake.
20802080
2081 It was created by libetpan $as_me 1.8.0, which was
2081 It was created by libetpan $as_me 1.9.1, which was
20822082 generated by GNU Autoconf 2.69. Invocation command line was
20832083
20842084 $ $0 $@
29482948
29492949 # Define the identity of the package.
29502950 PACKAGE='libetpan'
2951 VERSION='1.8.0'
2951 VERSION='1.9.1'
29522952
29532953
29542954 cat >>confdefs.h <<_ACEOF
31373137
31383138
31393139 VERSION_MAJOR=1
3140 VERSION_MINOR=8
3141 VERSION_MICRO=0
3140 VERSION_MINOR=9
3141 VERSION_MICRO=1
31423142
31433143 libcurl_major_required=0
31443144 libcurl_minor_required=0
31453145
3146 API_CURRENT=21
3146 API_CURRENT=22
31473147 API_REVISION=0
31483148 API_COMPATIBILITY=20
31493149
1714017140 SSLLIBS="-lcrypto $SSLLIBS"
1714117141 fi
1714217142
17143 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5
17144 $as_echo_n "checking for SSL_library_init in -lssl... " >&6; }
17145 if ${ac_cv_lib_ssl_SSL_library_init+:} false; then :
17143 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_CTX_new in -lssl" >&5
17144 $as_echo_n "checking for SSL_CTX_new in -lssl... " >&6; }
17145 if ${ac_cv_lib_ssl_SSL_CTX_new+:} false; then :
1714617146 $as_echo_n "(cached) " >&6
1714717147 else
1714817148 ac_check_lib_save_LIBS=$LIBS
1715617156 #ifdef __cplusplus
1715717157 extern "C"
1715817158 #endif
17159 char SSL_library_init ();
17159 char SSL_CTX_new ();
1716017160 int
1716117161 main ()
1716217162 {
17163 return SSL_library_init ();
17163 return SSL_CTX_new ();
1716417164 ;
1716517165 return 0;
1716617166 }
1716717167 _ACEOF
1716817168 if ac_fn_c_try_link "$LINENO"; then :
17169 ac_cv_lib_ssl_SSL_library_init=yes
17170 else
17171 ac_cv_lib_ssl_SSL_library_init=no
17169 ac_cv_lib_ssl_SSL_CTX_new=yes
17170 else
17171 ac_cv_lib_ssl_SSL_CTX_new=no
1717217172 fi
1717317173 rm -f core conftest.err conftest.$ac_objext \
1717417174 conftest$ac_exeext conftest.$ac_ext
1717517175 LIBS=$ac_check_lib_save_LIBS
1717617176 fi
17177 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_library_init" >&5
17178 $as_echo "$ac_cv_lib_ssl_SSL_library_init" >&6; }
17179 if test "x$ac_cv_lib_ssl_SSL_library_init" = xyes; then :
17177 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_CTX_new" >&5
17178 $as_echo "$ac_cv_lib_ssl_SSL_CTX_new" >&6; }
17179 if test "x$ac_cv_lib_ssl_SSL_CTX_new" = xyes; then :
1718017180 with_openssl=yes
1718117181 fi
1718217182
1904719047 # report actual input values of CONFIG_FILES etc. instead of their
1904819048 # values after options handling.
1904919049 ac_log="
19050 This file was extended by libetpan $as_me 1.8.0, which was
19050 This file was extended by libetpan $as_me 1.9.1, which was
1905119051 generated by GNU Autoconf 2.69. Invocation command line was
1905219052
1905319053 CONFIG_FILES = $CONFIG_FILES
1911319113 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
1911419114 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
1911519115 ac_cs_version="\\
19116 libetpan config.status 1.8.0
19116 libetpan config.status 1.9.1
1911719117 configured by $0, generated by GNU Autoconf 2.69,
1911819118 with options \\"\$ac_cs_config\\"
1911919119
11 # Process this file with autoconf to produce a configure script.
22
33 m4_define([maj_version], [1])
4 m4_define([min_version], [8])
5 m4_define([mic_version], [0])
6 m4_define([api_current], [21])
4 m4_define([min_version], [9])
5 m4_define([mic_version], [1])
6 m4_define([api_current], [22])
77 m4_define([api_revision], [0])
88 m4_define([api_compatibility], [20])
99 dnl API version
211211 AC_CHECK_HEADER(openssl/ssl.h, [
212212 AC_CHECK_LIB(rsaref, main, [SSLLIBS="-lrsaref"])
213213 AC_CHECK_LIB(crypto, main, [SSLLIBS="-lcrypto $SSLLIBS"], [], [$SSLLIBS])
214 AC_CHECK_LIB(ssl, SSL_library_init, with_openssl=yes, [], [$SSLLIBS])])
214 AC_CHECK_LIB(ssl, SSL_CTX_new, with_openssl=yes, [], [$SSLLIBS])])
215215 if test "x$with_openssl" != "xyes"; then
216216 CPPFLAGS="$OCPPFLAGS"
217217 LDFLAGS="$OLDFLAGS"
189189 struct sockaddr_un sa;
190190 int s;
191191
192 if (!(memcpy(sa.sun_path, path, strlen(path)))) {
192 if (sizeof(sa.sun_path) <= strlen(path)) {
193 return -1;
194 }
195
196 if (!(memcpy(sa.sun_path, path, strlen(path)+1))) {
193197 return -1;
194198 }
195199 sa.sun_family = AF_UNIX;
428428 int fd;
429429 int idle_fd;
430430 int cancel_fd;
431 struct timeval delay;
432431 int r;
433432 #if defined(WIN32)
434433 fd_set readfds;
532531 if (cancel_fd > maxfd) {
533532 maxfd = cancel_fd;
534533 }
534 struct timeval delay;
535535 delay.tv_sec = max_idle_delay;
536536 delay.tv_usec = 0;
537537
261261 void mailstream_openssl_init_not_required(void)
262262 {
263263 #ifdef USE_SSL
264 mailstream_ssl_init_lock();
264265 MUTEX_LOCK(&ssl_lock);
265266 openssl_init_done = 1;
266267 MUTEX_UNLOCK(&ssl_lock);
407408
408409 static int mailstream_openssl_client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
409410 {
410 struct mailstream_ssl_context * ssl_context = (struct mailstream_ssl_context *)SSL_CTX_get_app_data(ssl->ctx);
411 struct mailstream_ssl_context * ssl_context = (struct mailstream_ssl_context *)SSL_CTX_get_app_data(SSL_get_SSL_CTX(ssl));
411412
412413 if (x509 == NULL || pkey == NULL) {
413414 return 0;
426427 }
427428
428429 static struct mailstream_ssl_data * ssl_data_new_full(int fd, time_t timeout,
429 SSL_METHOD * method, void (* callback)(struct mailstream_ssl_context * ssl_context, void * cb_data),
430 const SSL_METHOD * method, void (* callback)(struct mailstream_ssl_context * ssl_context, void * cb_data),
430431 void * cb_data)
431432 {
432433 struct mailstream_ssl_data * ssl_data;
566567 #if GNUTLS_VERSION_NUMBER <= 0x020c00
567568 st->type = type;
568569 #else
569 st->key_type = type;
570 st->cert_type = type;
571 st->key_type = GNUTLS_PRIVKEY_X509;
570572 #endif
571573 st->cert.x509 = &(ssl_context->client_x509);
572574 st->key.x509 = ssl_context->client_pkey;
14531455 }
14541456
14551457 result = carray_new(4);
1456 for(skpos = 0 ; skpos < sk_num(skx) ; skpos ++) {
1457 X509 * x = (X509 *) sk_value(skx, skpos);
1458 for(skpos = 0 ; skpos < sk_num((_STACK *) skx) ; skpos ++) {
1459 X509 * x = (X509 *) sk_value((_STACK *) skx, skpos);
14581460 unsigned char * p;
14591461 MMAPString * str;
14601462 int length = i2d_X509(x, NULL);
14901490
14911491 multipart = mailprivacy_new_file_part(privacy, NULL,
14921492 "multipart/signed", -1);
1493 if (multipart == NULL) {
1494 res = MAIL_ERROR_MEMORY;
1495 goto unlink_description;
1496 }
14931497
14941498 content = multipart->mm_content_type;
14951499
18701874
18711875 multipart = mailprivacy_new_file_part(privacy, NULL,
18721876 "multipart/encrypted", -1);
1877 if (multipart == NULL) {
1878 res = MAIL_ERROR_MEMORY;
1879 goto unlink_description;
1880 }
18731881
18741882 content = multipart->mm_content_type;
18751883
19141922 version_filename,
19151923 "application/pgp-encrypted",
19161924 MAILMIME_MECHANISM_8BIT);
1917 if (r != MAIL_NO_ERROR) {
1918 mailprivacy_mime_clear(multipart);
1919 mailmime_free(multipart);
1920 res = r;
1925 if (version_mime == NULL) {
1926 mailprivacy_mime_clear(multipart);
1927 mailmime_free(multipart);
1928 res = MAIL_ERROR_MEMORY;
19211929 goto unlink_version;
19221930 }
19231931
19371945 encrypted_filename,
19381946 "application/octet-stream",
19391947 MAILMIME_MECHANISM_8BIT);
1940 if (r != MAIL_NO_ERROR) {
1941 mailprivacy_mime_clear(multipart);
1942 mailmime_free(multipart);
1943 res = r;
1948 if (encrypted_mime == NULL) {
1949 mailprivacy_mime_clear(multipart);
1950 mailmime_free(multipart);
1951 res = MAIL_ERROR_MEMORY;
19441952 goto unlink_version;
19451953 }
19461954
20912099
20922100 multipart = mailprivacy_new_file_part(privacy, NULL,
20932101 "multipart/encrypted", -1);
2102 if (multipart == NULL) {
2103 res = MAIL_ERROR_MEMORY;
2104 goto unlink_description;
2105 }
20942106
20952107 content = multipart->mm_content_type;
20962108
21342146 version_filename,
21352147 "application/pgp-encrypted",
21362148 MAILMIME_MECHANISM_8BIT);
2137 if (r != MAIL_NO_ERROR) {
2138 mailprivacy_mime_clear(multipart);
2139 mailmime_free(multipart);
2140 res = r;
2149 if (version_mime == NULL) {
2150 mailprivacy_mime_clear(multipart);
2151 mailmime_free(multipart);
2152 res = MAIL_ERROR_MEMORY;
21412153 goto unlink_version;
21422154 }
21432155
21572169 encrypted_filename,
21582170 "application/octet-stream",
21592171 MAILMIME_MECHANISM_8BIT);
2160 if (r != MAIL_NO_ERROR) {
2161 mailprivacy_mime_clear(multipart);
2162 mailmime_free(multipart);
2163 res = r;
2172 if (encrypted_mime == NULL) {
2173 mailprivacy_mime_clear(multipart);
2174 mailmime_free(multipart);
2175 res = MAIL_ERROR_MEMORY;
21642176 goto unlink_version;
21652177 }
21662178
3636 # include <config.h>
3737 #endif
3838
39 #if __APPLE__
40 #include <TargetConditionals.h>
41 #endif
3942 #include "mailprivacy_smime.h"
4043 #include <string.h>
4144 #ifdef WIN32
15361539 char quoted_store_cert_filename[PATH_MAX];
15371540 int r;
15381541 char command[PATH_MAX];
1539
1542
1543 #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
1544 //https://github.com/dinhviethoa/libetpan/issues/275
1545 //get_cert_from_sig is not needed on iOS
1546 return MAIL_ERROR_COMMAND;
1547 #endif
1548
15401549 if (* cert_dir == '\0')
15411550 return MAIL_ERROR_INVAL;
15421551
15961605 "openssl pkcs7 -inform DER -in '%s' -out '%s' -print_certs 2>/dev/null",
15971606 quoted_signature_filename, quoted_store_cert_filename);
15981607
1608 #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
1609 //https://github.com/dinhviethoa/libetpan/issues/275
1610 //system() is not supported on iOS 11.
15991611 r = system(command);
1612 #endif
1613
16001614 if (WEXITSTATUS(r) != 0) {
16011615 res = MAIL_ERROR_COMMAND;
16021616 goto unlink_signature;
3636 # include <config.h>
3737 #endif
3838
39 #if __APPLE__
40 #include <TargetConditionals.h>
41 #endif
42
3943 #include "mailprivacy_tools.h"
4044 #include "mailprivacy_tools_private.h"
4145
13221326 char * stdoutfile, char * stderrfile,
13231327 int * bad_passphrase)
13241328 {
1329 #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
1330 //https://github.com/dinhviethoa/libetpan/issues/275
1331 //mailprivacy_spawn_and_wait is not needed on iOS
1332 return MAIL_ERROR_COMMAND;
1333 #endif
1334
13251335 #ifdef WIN32
13261336 int res;
13271337 SECURITY_ATTRIBUTES sec_attr;
15081518 dup2(fd_err, 2);
15091519 close(fd_err);
15101520
1521 #if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
1522 //https://github.com/dinhviethoa/libetpan/issues/275
1523 //system() is not supported on iOS 11.
15111524 status = system(command);
1512
1525 #endif
1526
15131527 exit(WEXITSTATUS(status));
15141528 }
15151529 break;
344344 ext_data->ext_extension->ext_id == MAILIMAP_EXTENSION_ACL &&
345345 ext_data->ext_type == MAILIMAP_ACL_TYPE_MYRIGHTS_DATA) {
346346 * result = (struct mailimap_acl_myrights_data *)ext_data->ext_data;
347 ext_data->ext_data = NULL;
347348 /* remove the element from rsp_extension_list */
348349 clist_delete(session->imap_response_info->rsp_extension_list, cur);
350 mailimap_extension_data_free(ext_data);
349351
350352 break;
351353 }
165165 if (data == NULL)
166166 return;
167167
168 if (data->ext_extension != NULL)
168 if (data->ext_extension != NULL && data->ext_data != NULL)
169 /* ext_free() includes free(data) */
169170 data->ext_extension->ext_free(data);
170171 else
171172 free(data);
3232 #define MAILIMAP_EXTENSION_TYPES_H
3333
3434 #include <libetpan/mailstream.h>
35 #include <libetpan/mailimap_types.h>
3536
3637 struct mailimap_extension_data;
3738
12001200 LIBETPAN_EXPORT
12011201 void mailimap_flag_list_free(struct mailimap_flag_list * flag_list)
12021202 {
1203 clist_foreach(flag_list->fl_list, (clist_func) mailimap_flag_free, NULL);
1204 clist_free(flag_list->fl_list);
1203 if (flag_list->fl_list) {
1204 clist_foreach(flag_list->fl_list, (clist_func) mailimap_flag_free, NULL);
1205 clist_free(flag_list->fl_list);
1206 }
12051207 free(flag_list);
12061208 }
12071209
11721172 return res;
11731173 }
11741174
1175 LIBETPAN_EXPORT
11761175 static int mailimf_fws_atom_for_word_parse(const char * message, size_t length,
11771176 size_t * indx, char ** result, int * p_missing_closing_quote)
11781177 {
11611161 size_t cur_offset;
11621162 char * dest;
11631163 size_t size;
1164 int i;
1164 unsigned int i;
11651165
11661166 size = 0;
11671167 for(i = 0 ; i < carray_count(folder->mb_tab) ; i ++) {
368368 struct mailmime_encoded_word ** result,
369369 int * p_has_fwd, int * p_missing_closing_quote)
370370 {
371 #if 0
372 size_t cur_token;
373 char * charset;
374 int encoding;
375 char * text;
376 size_t end_encoding;
377 char * decoded;
378 size_t decoded_len;
379 struct mailmime_encoded_word * ew;
380 int r;
381 int res;
382 int opening_quote;
383 int end;
384 int has_fwd;
385 int missing_closing_quote;
386
387 cur_token = * indx;
388
389 missing_closing_quote = 0;
390 has_fwd = 0;
391 r = mailimf_fws_parse(message, length, &cur_token);
392 if (r == MAILIMF_NO_ERROR) {
393 has_fwd = 1;
394 }
395 if ((r != MAILIMF_NO_ERROR) && (r != MAILIMF_ERROR_PARSE)) {
396 res = r;
397 goto err;
398 }
399
400 opening_quote = FALSE;
401 r = mailimf_char_parse(message, length, &cur_token, '\"');
402 if (r == MAILIMF_NO_ERROR) {
403 opening_quote = TRUE;
404 }
405 else if (r == MAILIMF_ERROR_PARSE) {
406 /* do nothing */
407 }
408 else {
409 res = r;
410 goto err;
411 }
412
413 r = mailimf_token_case_insensitive_parse(message, length, &cur_token, "=?");
414 if (r != MAILIMF_NO_ERROR) {
415 res = r;
416 goto err;
417 }
418
419 r = mailmime_charset_parse(message, length, &cur_token, &charset);
420 if (r != MAILIMF_NO_ERROR) {
421 res = r;
422 goto err;
423 }
424
425 r = mailimf_char_parse(message, length, &cur_token, '?');
426 if (r != MAILIMF_NO_ERROR) {
427 res = r;
428 goto free_charset;
429 }
430
431 r = mailmime_encoding_parse(message, length, &cur_token, &encoding);
432 if (r != MAILIMF_NO_ERROR) {
433 res = r;
434 goto free_charset;
435 }
436
437 r = mailimf_char_parse(message, length, &cur_token, '?');
438 if (r != MAILIMF_NO_ERROR) {
439 res = r;
440 goto free_charset;
441 }
442
443 end = FALSE;
444 end_encoding = cur_token;
445 while (1) {
446 if (end_encoding >= length)
447 break;
448
449 if (end_encoding + 1 < length) {
450 if ((message[end_encoding] == '?') && (message[end_encoding + 1] == '=')) {
451 end = TRUE;
452 }
453 }
454
455 if (end)
456 break;
457
458 end_encoding ++;
459 }
460
461 decoded_len = 0;
462 decoded = NULL;
463 switch (encoding) {
464 case MAILMIME_ENCODING_B:
465 r = mailmime_base64_body_parse(message, end_encoding,
466 &cur_token, &decoded,
467 &decoded_len);
468
469 if (r != MAILIMF_NO_ERROR) {
470 res = r;
471 goto free_charset;
472 }
473 break;
474 case MAILMIME_ENCODING_Q:
475 r = mailmime_quoted_printable_body_parse(message, end_encoding,
476 &cur_token, &decoded,
477 &decoded_len, TRUE);
478
479 if (r != MAILIMF_NO_ERROR) {
480 res = r;
481 goto free_charset;
482 }
483
484 break;
485 }
486
487 text = malloc(decoded_len + 1);
488 if (text == NULL) {
489 res = MAILIMF_ERROR_MEMORY;
490 goto free_charset;
491 }
492
493 if (decoded_len > 0)
494 memcpy(text, decoded, decoded_len);
495 text[decoded_len] = '\0';
496
497 mailmime_decoded_part_free(decoded);
498
499 r = mailimf_token_case_insensitive_parse(message, length, &cur_token, "?=");
500 #if 0
501 if (r != MAILIMF_NO_ERROR) {
502 res = r;
503 goto free_encoded_text;
504 }
505 #endif
506
507 if (opening_quote) {
508 r = mailimf_char_parse(message, length, &cur_token, '\"');
509 #if 0
510 if ((r != MAILIMF_NO_ERROR) && (r != MAILIMF_ERROR_PARSE)) {
511 res = r;
512 goto free_encoded_text;
513 }
514 #endif
515 if (r == MAILIMF_ERROR_PARSE) {
516 missing_closing_quote = 1;
517 }
518 }
519
520 /* fix charset */
521 if (strcasecmp(charset, "utf8") == 0) {
522 free(charset);
523 charset = strdup("utf-8");
524 }
525 ew = mailmime_encoded_word_new(charset, text);
526 if (ew == NULL) {
527 res = MAILIMF_ERROR_MEMORY;
528 goto free_encoded_text;
529 }
530
531 * result = ew;
532 * indx = cur_token;
533 * p_has_fwd = has_fwd;
534 * p_missing_closing_quote = missing_closing_quote;
535
536 return MAILIMF_NO_ERROR;
537
538 free_encoded_text:
539 mailmime_encoded_text_free(text);
540 free_charset:
541 mailmime_charset_free(charset);
542 err:
543 return res;
544 #else
545371 /*
546372 Parse the following, when a unicode character encoding is split.
547373 =?UTF-8?B?4Lij4Liw4LmA4Lia4Li04LiU4LiE4Lin4Liy4Lih4Lih4Lix4LiZ4Liq4LmM?=
820646 mailmime_decoded_part_free(decoded);
821647 free_body:
822648 free(body);
823 free_encoded_text:
824649 mailmime_encoded_text_free(text);
825650 free_charset:
826651 mailmime_charset_free(charset);
827652 err:
828653 return res;
829 #endif
830654 }
831655
832656 static int mailmime_charset_parse(const char * message, size_t length,
12231223 return "Transaction failed";
12241224 case MAILSMTP_ERROR_MEMORY:
12251225 return "Memory error";
1226 case MAILSMTP_ERROR_AUTH_NOT_SUPPORTED:
1227 return "Authentication is not supported";
12261228 case MAILSMTP_ERROR_CONNECTION_REFUSED:
12271229 return "Connection refused";
12281230 case MAILSMTP_ERROR_STARTTLS_TEMPORARY_FAILURE:
12301232 case MAILSMTP_ERROR_STARTTLS_NOT_SUPPORTED:
12311233 return "TLS not supported by server";
12321234 case MAILSMTP_ERROR_AUTH_LOGIN:
1233 return "Login failed";
1235 return "Login failed";
12341236 default:
12351237 return "Unknown error code";
12361238 }
3737 #endif
3838
3939 #ifndef LIBETPAN_VERSION_MINOR
40 #define LIBETPAN_VERSION_MINOR 8
40 #define LIBETPAN_VERSION_MINOR 9
4141 #endif
4242
4343 #ifndef LIBETPAN_REENTRANT
4646 #endif
4747
4848 #ifndef LIBETPAN_API_CURRENT
49 #define LIBETPAN_API_CURRENT 21
49 #define LIBETPAN_API_CURRENT 22
5050 #endif
5151
5252 #ifndef LIBETPAN_API_REVISION
9696 {"cache", 1, 0, 'c'},
9797 {"flags", 1, 0, 'f'},
9898 {"debug-stream", 0, 0, 'D'},
99 {NULL, 0, 0, 0},
99100 };
100101 #endif
101102 int r;
5353 #define BLOCKSIZE 4096
5454
5555 int collect(struct mem_message *message) {
56 int len;
57
58 memset(message, 0, sizeof(struct mem_message));
59
60 #ifndef MMAP_UNAVAILABLE
5661 struct stat sb;
57 int len;
58
59 memset(message, 0, sizeof(struct mem_message));
60
61 #ifndef MMAP_UNAVAILABLE
6262 /* if stdin is a file whose size is known, try to mmap it */
6363 if (!fstat(0, &sb) && S_ISREG(sb.st_mode) && sb.st_size >= 0) {
6464 message->len = sb.st_size;
285285 {"no-esmtp", 0, 0, 'E'},
286286 {"ssl", 0, 0, 'L'},
287287 {"lmtp", 0, 0, 'T'},
288 {NULL, 0, 0, 0},
288289 };
289290 #endif
290291