isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit 1b354fa61a703cf4901f782d9effa689a9f03a7a
parent 118fdc4f18c20aab4f2f2e22f8812b49a4a7096a
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Sun,  1 Oct 2017 10:38:43 +0200

Merge branch '1.2'

Conflicts:
	Makefile.am
	configure.ac
	debian/.gitignore

Diffstat:
MMakefile.am | 8++------
Mconfigure.ac | 12++++++------
Mdebian/.gitignore | 4+++-
Adebian/README.Debian | 12++++++++++++
Mdebian/changelog | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdebian/compat | 2+-
Mdebian/control | 45+++++++++++++++++++++++++++------------------
Mdebian/copyright | 59++++++++++++++++++++++++++++++-----------------------------
Ddebian/dirs | 1-
Ddebian/docs | 3---
Ddebian/generate-deb | 39---------------------------------------
Mdebian/rules | 61++++++++-----------------------------------------------------
Adebian/source/format | 1+
Mdebian/watch | 2+-
Msrc/common.h | 6++++++
Msrc/compat/config.c | 5+++--
Msrc/compat/isync.1 | 2+-
Msrc/compat/isync.h | 6++++++
Msrc/compat/main.c | 8++++----
Msrc/drv_imap.c | 8++++----
Msrc/main.c | 6+++---
Msrc/mbsync.1 | 4++--
Msrc/socket.c | 2+-
23 files changed, 215 insertions(+), 175 deletions(-)

diff --git a/Makefile.am b/Makefile.am @@ -58,12 +58,8 @@ cov-scan: clean /opt/cov-analysis-*/bin/cov-build --dir cov-int $(MAKE) tar cavf isync.tar.xz cov-int -deb: deb-clean - CFLAGS= fakeroot debian/rules binary - -deb-clean: - dh_clean -Xsrc/ - fakeroot debian/rules clean +deb: + CFLAGS= INSTALL= dpkg-buildpackage -b --no-sign dist-hook: find $(distdir)/debian \( -name .#\*# -o -type l \) -print0 | xargs -0r rm -rf diff --git a/configure.ac b/configure.ac @@ -54,13 +54,13 @@ if test "x$ob_cv_with_ssl" != xno; then dnl Detect the pkg-config tool, as it may have extra info about the openssl dnl installation we can use. I *believe* this is what we are expected to do dnl on really recent Redhat Linux hosts. - AC_PATH_PROG(PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin) - if test "$PKGCONFIG" != "no" ; then + PKG_PROG_PKG_CONFIG + if test "x$PKG_CONFIG" != "x" ; then AC_MSG_CHECKING([OpenSSL presence with pkg-config]) - if $PKGCONFIG --exists openssl; then - SSL_LIBS=`$PKGCONFIG --libs-only-l openssl` - SSL_LDFLAGS=`$PKGCONFIG --libs-only-L openssl` - SSL_CPPFLAGS=`$PKGCONFIG --cflags-only-I openssl` + if $PKG_CONFIG --exists openssl; then + SSL_LIBS=`$PKG_CONFIG --libs-only-l openssl` + SSL_LDFLAGS=`$PKG_CONFIG --libs-only-L openssl` + SSL_CPPFLAGS=`$PKG_CONFIG --cflags-only-I openssl` have_ssl_paths=yes AC_MSG_RESULT([found]) else diff --git a/debian/.gitignore b/debian/.gitignore @@ -1,5 +1,7 @@ +/.debhelper +/autoreconf.after +/autoreconf.before /files /isync /isync.debhelper.log -/isync.postrm.debhelper /isync.substvars diff --git a/debian/README.Debian b/debian/README.Debian @@ -0,0 +1,12 @@ +A note from isync's web site: + +isync can be integrated into Mutt fairly easily with a few hooks: + + folder-hook ~A bind index $ <sync-mailbox> + folder-hook +maildir 'macro index $ "<sync-mailbox>!isync -e maildir\n"' + +where maildir is the name of the local mailbox (or its alias). This works well +so long as you are not modifying the IMAP mailbox outside of Mutt. However, if +you are using another mail program simultaneously Mutt will have the wrong idea +of the local mailbox flags and messages will start disappearing from its index +display (don't worry, they are still on disk). diff --git a/debian/changelog b/debian/changelog @@ -1,3 +1,97 @@ +isync (1.2.3-0) unstable; urgency=low + + * Upload to unstable (with urgency=low) + + -- Oswald Buddenhagen <ossi@users.sf.net> Sun, 01 Oct 2017 12:12:12 +0000 + +isync (1.2.1-2) unstable; urgency=low + + * Upload to unstable (with urgency=low) + * Don't call uupdate after uscan + * Import patch to fix build with OpenSSL 1.1 (Closes: #828357) + * Bump Standards-Version to 3.9.8 (no changes needed) + * Add pkg-config to Build-Depends + * Update Vcs-* URLs + * Fix spelling-error-in-binary + + -- Alessandro Ghedini <ghedo@debian.org> Sat, 19 Nov 2016 17:14:42 +0000 + +isync (1.2.1-1) experimental; urgency=medium + + [ Evgeni Golov ] + * New upstream release. + * Explicitly Build-Depend on zlib1g-dev + + -- Alessandro Ghedini <ghedo@debian.org> Sat, 09 Jan 2016 12:56:39 +0000 + +isync (1.2.0-1) experimental; urgency=medium + + * New upstream release + - Only show sync progress by default (Closes: #765052) + * Enable libsasl support + + -- Alessandro Ghedini <ghedo@debian.org> Mon, 06 Apr 2015 13:42:24 +0200 + +isync (1.1.2-1) unstable; urgency=medium + + * New upstream release + * Bump Standards-Version to 3.9.6 (no changes needed) + + -- Alessandro Ghedini <ghedo@debian.org> Sun, 01 Feb 2015 20:42:25 +0100 + +isync (1.1.1-1) unstable; urgency=medium + + * New upstream release + - Don't lie about the default of User (Closes: #744389) + - Don't forget to reset message counts when skipping scan (Closes: #744259) + - Rework maildir store mapping (Closes: #737708) + * Drop 01_fix-manpages.patch (merged upstream) + * Drop 02_fix-empty-folder-sync.patch (merged upstream) + + -- Alessandro Ghedini <ghedo@debian.org> Tue, 03 Jun 2014 21:00:44 +0200 + +isync (1.1.0-2) unstable; urgency=medium + + * Drop 02_fix-duplicate-changelog.patch + (rm the file after installation instead) + * Update 01_fix-manpages.patch + * Add 02_fix-empty-folder-sync.patch (Closes: #738873) + + -- Alessandro Ghedini <ghedo@debian.org> Fri, 14 Feb 2014 20:41:49 +0100 + +isync (1.1.0-1) unstable; urgency=low + + * New upstream release (Closes: #674403) + - Fix overlapping memcpy (Closes: #650373) + - Fix segfault while syncing mailboxes (Closes: #411120) + - Fix segfault when invoked with arguments without configuration + (Closes: #727239) + * Bump debhelper compat level, update Build-Depends + * Switch to short-form dh rules, remove useless files + * Switch to 3.0 (quilt) source format + * Remove empty patches/ directory + * Drop local source modifications + * Update short/long descriptions + * Add 01_fix-manpages.patch to fix manpage errors and typos + * Add Homepage field + * Update copyright file to Copyright-Format 1.0 + * Add Vcs-* fields + * Add 02_fix-duplicate-changelog.patch to avoid duplicate changelog install + * Add myself to Uploaders + * Bump Standards-Version to 3.9.5 (no changes needed) + * Use dh-autoreconf instead of autotools-dev + + -- Alessandro Ghedini <ghedo@debian.org> Sun, 12 Jan 2014 16:35:52 +0100 + +isync (1.0.4-2.2) unstable; urgency=low + + * Non-maintainer upload. + * Apply upstream patch for CVE-2013-0289. + Fix incorrect server's SSL x509.v3 certificate validation when + performing IMAP synchronization. (Closes: #701052) + + -- Salvatore Bonaccorso <carnil@debian.org> Sun, 24 Feb 2013 09:27:55 +0100 + isync (1.0.4-2.1) unstable; urgency=low * Non-maintainer upload. diff --git a/debian/compat b/debian/compat @@ -1 +1 @@ -4 +9 diff --git a/debian/control b/debian/control @@ -2,33 +2,42 @@ Source: isync Section: mail Priority: optional Maintainer: Nicolas Boullis <nboullis@debian.org> -Uploaders: Theodore Y. Ts'o <tytso@mit.edu> -Standards-Version: 3.7.3 -Build-Depends: libssl-dev (>= 0.9.8), debhelper (>= 4.1.16), dpkg-dev (>= 1.9.0), libdb-dev +Uploaders: Theodore Y. Ts'o <tytso@mit.edu>, + Alessandro Ghedini <ghedo@debian.org> +Standards-Version: 3.9.8 +Build-Depends: debhelper (>= 9), + dh-autoreconf, + libdb-dev, + libsasl2-dev, + libssl-dev, + pkg-config, + zlib1g-dev +Vcs-Git: https://anonscm.debian.org/git/collab-maint/isync.git +Vcs-Browser: https://anonscm.debian.org/gitweb/?p=collab-maint/isync.git +Homepage: http://isync.sourceforge.net/ Package: isync Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: mutt -Description: Synchronize Maildir and IMAP4 mailboxes - A command line application which synchronizes mailboxes; currently - Maildir and IMAP4 mailboxes are supported. - New messages, message deletions and flag changes can be propagated both ways. - It is useful for working in disconnected mode, such as on a laptop or with a - non-permanent internet collection (dIMAP). +Description: IMAP and MailDir mailbox synchronizer + mbsync/isync is a command line application which synchronizes mailboxes; + currently Maildir and IMAP4 mailboxes are supported. New messages, message + deletions and flag changes can be propagated both ways. isync is suitable + for use in IMAP-disconnected mode. . - The main application was much improved in version 1.0. Those - improvements lead to interface changes and the application being - renamed to mbsync. The application isync is now only a wrapper to - keep compatibility with earlier versions. + The main application was much improved in version 1.0. Those improvements + lead to interface changes and the application being renamed to mbsync. The + application isync is now only a wrapper to keep compatibility with earlier + versions. . Features: * Fine-grained selection of synchronization operations to perform * Synchronizes single mailboxes or entire mailbox collections * Partial mirrors possible: keep only the latest messages locally * Trash functionality: backup messages before removing them - * IMAP features: - * Supports TLS/SSL via imaps: (port 993) and STARTTLS (RFC2595) - * Supports CRAM-MD5 (RFC2195) for authentication - * Supports NAMESPACE (RFC2342) for simplified configuration - * Pipelining for maximum speed + IMAP features: + * Security: supports TLS/SSL via imaps: (port 993) and STARTTLS; SASL + for authentication + * Supports NAMESPACE for simplified configuration + * Pipelining for maximum speed diff --git a/debian/copyright b/debian/copyright @@ -1,32 +1,33 @@ -This package was debianized by Tommi Virtanen <tv@debian.org> and is now -maintained by Nicolas Boullis <nboullis@debian.org>. +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: isync +Source: http://isync.sourceforge.net -It was downloaded from http://isync.sourceforge.net/ +Files: * +Copyright: 2000-2002, Michael R. Elkins <me@mutt.org> + 2002-2017, Oswald Buddenhagen <ossi@users.sf.net> + 2004, Theodore Y. Ts'o <tytso@mit.edu> +License: GPL-2+ -Upstream Author: Michael R. Elkins <me@mutt.org>, - Oswald Buddenhagen <ossi@users.sf.net> +Files: debian/* +Copyright: 2013, Alessandro Ghedini <ghedo@debian.org> +License: GPL-2+ -Copyright: - - * isync - IMAP4 to maildir mailbox synchronizer - * Copyright (C) 2000-2002 Michael R. Elkins <me@mutt.org> - * Copyright (C) 2002-2006 Oswald Buddenhagen <ossi@users.sf.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * As a special exception, isync may be linked with the OpenSSL library, - * despite that library's more restrictive license. - -On Debian systems, the complete text of the GNU General Public -License can be found in /usr/share/common-licenses/GPL +License: GPL-2+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + . + As a special exception, mbsync may be linked with the OpenSSL library, + despite that library's more restrictive license. + . + On Debian systems, the complete text of the GNU General Public License version + 2 can be found in "/usr/share/common-licenses/GPL-2". diff --git a/debian/dirs b/debian/dirs @@ -1 +0,0 @@ -usr/bin diff --git a/debian/docs b/debian/docs @@ -1,3 +0,0 @@ -NEWS -README -TODO diff --git a/debian/generate-deb b/debian/generate-deb @@ -1,39 +0,0 @@ -#!/bin/sh -# -# Intended to be run from the root of the isync source tree in the repository. -# -VERSION=`dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-[^-]\+$/\1/p'` -OLDVERSION=$VERSION - -if echo $VERSION | grep +cvsXXXXXXXX; then - DATE=`date +%Y%m%d` - VERSION=`echo $VERSION | sed -e s/+cvsXXXXXXXX/+cvs${DATE}/` -else - if [ ! -f ../isync_$VERSION.orig.tar.gz ]; then - echo isync_$VERSION.orig.tar.gz must be found in the parent directory. - exit 1 - fi -fi -rm -rf ../isync-$VERSION - -fakeroot ./debian/rules clean -cp -rl . ../isync-$VERSION -cd ../isync-$VERSION -if [ "$OLDVERSION" != "$VERSION" ]; then - sed -e s/+cvsXXXXXXXX/+cvs${DATE}/ < debian/changelog > debian/changelog.new - mv debian/changelog.new debian/changelog -fi -find . -name .git -print0 | xargs -0r rm -rf -find . -name .gitignore -print0 | xargs -0r rm -find . -type l -print0 | xargs -0r rm -find . -name .#\*# -print0 | xargs -0r rm -aclocal -autoheader -automake --add-missing --copy -autoconf -if [ -n "$DOSIGN" ]; then - SIGNOPTS= -else - SIGNOPTS="-us -uc" -fi -dpkg-buildpackage -rfakeroot $SIGNOPTS diff --git a/debian/rules b/debian/rules @@ -1,55 +1,10 @@ #!/usr/bin/make -f -CFLAGS = -Wall -g -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) -CFLAGS += -O0 -else -CFLAGS += -O2 -endif - -DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - -build: build-stamp -build-stamp: - dh_testdir - ./configure --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) --prefix=/usr --mandir=/usr/share/man - $(MAKE) CFLAGS="$(CFLAGS)" - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp - [ ! -f Makefile ] || $(MAKE) distclean - dh_clean Makefile config.log config.status - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs usr/bin usr/share/man/man1 - $(MAKE) DESTDIR=$(CURDIR)/debian/isync install - rm -r $(CURDIR)/debian/isync/usr/share/doc - mv $(CURDIR)/debian/isync/usr/bin/get-cert $(CURDIR)/debian/isync/usr/bin/mbsync-get-cert - -binary-indep: build install - -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs ChangeLog - dh_installdocs AUTHORS NEWS README TODO - dh_installexamples src/mbsyncrc.sample src/compat/isyncrc.sample - dh_installman - dh_strip - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install +%: + dh $@ --with=autoreconf + +override_dh_auto_install: + dh_auto_install + mv $(CURDIR)/debian/isync/usr/bin/get-cert \ + $(CURDIR)/debian/isync/usr/bin/mbsync-get-cert + $(RM) $(CURDIR)/debian/isync/usr/share/doc/isync/ChangeLog diff --git a/debian/source/format b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/watch b/debian/watch @@ -1,2 +1,2 @@ version=3 -http://sf.net/isync/ isync-(.*)\.tar\.gz debian uupdate +http://sf.net/isync/ isync-(.*)\.tar\.gz diff --git a/src/common.h b/src/common.h @@ -54,6 +54,12 @@ typedef unsigned int uint; # define ATTR_PACKED(ref) #endif +#if __GNUC__ >= 7 +# define FALLTHROUGH __attribute__((fallthrough)); +#else +# define FALLTHROUGH +#endif + #ifdef __GNUC__ # define INLINE __inline__ #else diff --git a/src/compat/config.c b/src/compat/config.c @@ -316,9 +316,10 @@ write_imap_server( FILE *fp, config_t *cfg ) if (cfg->pass) fprintf( fp, "Pass %s\n", quotify( cfg->pass ) ); fprintf( fp, "RequireCRAM %s\nRequireSSL %s\n" - "UseSSLv2 %s\nUseSSLv3 %s\nUseTLSv1 %s\n", + "UseSSLv2 %s\nUseSSLv3 %s\nUseTLSv1 %s\nUseTLSv1.1 %s\nUseTLSv1.2 %s\n", tb(cfg->require_cram), tb(cfg->require_ssl), - tb(cfg->use_sslv2), tb(cfg->use_sslv3), tb(cfg->use_tlsv1) ); + tb(cfg->use_sslv2), tb(cfg->use_sslv3), + tb(cfg->use_tlsv1), tb(cfg->use_tlsv1), tb(cfg->use_tlsv1) ); if ((cfg->use_imaps || cfg->use_sslv2 || cfg->use_sslv3 || cfg->use_tlsv1) && cfg->cert_file) fprintf( fp, "CertificateFile %s\n", quotify( cfg->cert_file ) ); diff --git a/src/compat/isync.1 b/src/compat/isync.1 @@ -278,7 +278,7 @@ Should \fBisync\fR use SSLv3 for communication with the IMAP server over SSL? .. .TP \fBUseTLSv1\fR \fIyes\fR|\fIno\fR -Should \fBisync\fR use TLSv1 for communication with the IMAP server over SSL? +Should \fBisync\fR use TLSv1.x for communication with the IMAP server over SSL? (Default: \fIyes\fR) .. .TP diff --git a/src/compat/isync.h b/src/compat/isync.h @@ -34,6 +34,12 @@ # define ATTR_PRINTFLIKE(fmt,var) #endif +#if __GNUC__ >= 7 +# define FALLTHROUGH __attribute__((fallthrough)); +#else +# define FALLTHROUGH +#endif + typedef struct config { struct config *next; diff --git a/src/compat/main.c b/src/compat/main.c @@ -64,14 +64,14 @@ struct option Opts[] = { }; #endif -static void +static void ATTR_NORETURN version( void ) { puts( PACKAGE " " VERSION ); exit( 0 ); } -static void +static void ATTR_NORETURN usage( int code ) { fputs( @@ -194,13 +194,13 @@ main( int argc, char **argv ) switch (i) { case 'W': outconfig = optarg; - /* plopp */ + FALLTHROUGH case 'w': writeout = 1; break; case 'l': list = 1; - /* plopp */ + FALLTHROUGH case 'a': all = 1; break; diff --git a/src/drv_imap.c b/src/drv_imap.c @@ -3115,7 +3115,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep ) arg += 6; server->ssl_type = SSL_IMAPS; if (server->sconf.ssl_versions == -1) - server->sconf.ssl_versions = SSLv2 | SSLv3 | TLSv1; + server->sconf.ssl_versions = SSLv2 | SSLv3 | TLSv1 | TLSv1_1 | TLSv1_2; } else #endif if (starts_with( arg, -1, "imap:", 5 )) @@ -3285,7 +3285,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep ) #ifdef HAVE_LIBSSL if ((use_sslv2 & use_sslv3 & use_tlsv1 & use_tlsv11 & use_tlsv12) != -1 || use_imaps >= 0 || require_ssl >= 0) { if (server->ssl_type >= 0 || server->sconf.ssl_versions >= 0) { - error( "%s '%s': The deprecated UseSSL*, UseTLS*, UseIMAPS, and RequireSSL options are mutually exlusive with SSLType and SSLVersions.\n", type, name ); + error( "%s '%s': The deprecated UseSSL*, UseTLS*, UseIMAPS, and RequireSSL options are mutually exclusive with SSLType and SSLVersions.\n", type, name ); cfg->err = 1; return 1; } @@ -3313,14 +3313,14 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep ) } } else { if (server->sconf.ssl_versions < 0) - server->sconf.ssl_versions = TLSv1; /* Most compatible and still reasonably secure. */ + server->sconf.ssl_versions = TLSv1 | TLSv1_1 | TLSv1_2; if (server->ssl_type < 0) server->ssl_type = server->sconf.tunnel ? SSL_None : SSL_STARTTLS; } #endif if (require_cram >= 0) { if (server->auth_mechs) { - error( "%s '%s': The deprecated RequireCRAM option is mutually exlusive with AuthMech.\n", type, name ); + error( "%s '%s': The deprecated RequireCRAM option is mutually exclusive with AuthMech.\n", type, name ); cfg->err = 1; return 1; } diff --git a/src/main.c b/src/main.c @@ -52,14 +52,14 @@ int new_total[2], new_done[2]; int flags_total[2], flags_done[2]; int trash_total[2], trash_done[2]; -static void +static void ATTR_NORETURN version( void ) { puts( PACKAGE " " VERSION ); exit( 0 ); } -static void +static void ATTR_NORETURN usage( int code ) { fputs( @@ -599,7 +599,7 @@ main( int argc, char **argv ) goto cop; case 'F': cops |= XOP_PULL|XOP_PUSH; - /* fallthrough */ + FALLTHROUGH case '0': ops[M] |= XOP_HAVE_TYPE; break; diff --git a/src/mbsync.1 b/src/mbsync.1 @@ -368,8 +368,8 @@ right after connecting the secure IMAP port 993. Select the acceptable SSL/TLS versions. Use of SSLv2 is strongly discouraged for security reasons, but might be the only option on some very old servers. -Generally, the newest TLS version is recommended, but as this confuses some -servers, \fBTLSv1\fR is the default. +Use old versions only when the server has problems with newer ones. +(Default: [\fBTLSv1\fR] [\fBTLSv1.1\fR] [\fBTLSv1.2\fR]). .. .TP \fBSystemCertificates\fR \fByes\fR|\fBno\fR diff --git a/src/socket.c b/src/socket.c @@ -72,7 +72,7 @@ ssl_return( const char *func, conn_t *conn, int ret ) return ret; case SSL_ERROR_WANT_WRITE: conf_notifier( &conn->notify, POLLIN, POLLOUT ); - /* fallthrough */ + FALLTHROUGH case SSL_ERROR_WANT_READ: return 0; case SSL_ERROR_SYSCALL: