• Bernhard Reiter's avatar
    git-imap-send: use libcurl for implementation · 1e16b255
    Bernhard Reiter authored
    Use libcurl's high-level API functions to implement git-imap-send
    instead of the previous low-level OpenSSL-based functions.
    Since version 7.30.0, libcurl's API has been able to communicate with
    IMAP servers. Using those high-level functions instead of the current
    ones would reduce imap-send.c by some 1200 lines of code. For now,
    the old ones are wrapped in #ifdefs, and the new functions are enabled
    by make if curl's version is >= 7.34.0, from which version on curl's
    CURLOPT_LOGIN_OPTIONS (enabling IMAP authentication) parameter has been
    available. The low-level functions will still be used for tunneling
    into the server for now.
    As I don't have access to that many IMAP servers, I haven't been able to
    test the new code with a wide variety of parameter combinations. I did
    test both secure and insecure (imaps:// and imap://) connections and
    values of "PLAIN" and "LOGIN" for the authMethod.
    In order to suppress a sparse warning about "using sizeof on a
    function", we use the same solution used in commit 9371322a
    ("sparse: suppress some "using sizeof on a function" warnings",
    06-10-2013) which solved exactly this problem for the other commands
    using libcurl.
    Helped-by: default avatarRamsay Jones <ramsay@ramsay1.demon.co.uk>
    Signed-off-by: default avatarBernhard Reiter <ockham@raz.or.at>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>