[balsa/fix_missing_tls_server_identity] fix NULL server-identity TLS warning with recent gio



commit e8952e3ccb1bb5094a6f8920e7c274e2e7dae184
Author: Albrecht Dreß <albrecht dress arcor de>
Date:   Sat Apr 18 18:25:30 2020 +0200

    fix NULL server-identity TLS warning with recent gio
    
    - libnetclient/net-client.c: use the remote host name as expected server
      identity for TLS connections.  This fixes a strange warning when using
      recent GIO versions (see issue #34)
    - libnetclient/test: replace the snakeoil test certificates as the old ones
      are not accepted any more by GnuTLS for security reasons; fix unit tests;
      add some more Valgrind suppressions for false-positives

 libnetclient/net-client.c       |  27 +++++---
 libnetclient/test/ca_cert.pem   | 106 ++++++++++++++++++-------------
 libnetclient/test/cert.pem      | 134 +++++++++++++++++++++++++---------------
 libnetclient/test/cert_u.pem    | 130 ++++++++++++++++++++++++--------------
 libnetclient/test/tests.c       |  28 ++++-----
 libnetclient/test/valgrind.supp |  15 +++++
 6 files changed, 280 insertions(+), 160 deletions(-)
---
diff --git a/libnetclient/net-client.c b/libnetclient/net-client.c
index 98625b9bf..fae535bd1 100644
--- a/libnetclient/net-client.c
+++ b/libnetclient/net-client.c
@@ -43,6 +43,7 @@ struct _NetClientPrivate {
        gsize max_line_len;
 
        GSocketClient *sock;
+       GSocketConnectable *remote_address;
        GSocketConnection *plain_conn;
        GIOStream *tls_conn;
        GDataInputStream *istream;
@@ -143,13 +144,19 @@ net_client_connect(NetClient *client, GError **error)
        if (priv->plain_conn != NULL) {
                g_set_error(error, NET_CLIENT_ERROR_QUARK, (gint) NET_CLIENT_ERROR_CONNECTED, _("network 
client is already connected"));
        } else {
-               priv->plain_conn = g_socket_client_connect_to_host(priv->sock, priv->host_and_port, 
priv->default_port, NULL, error);
-               if (priv->plain_conn != NULL) {
-                       g_debug("connected to %s", priv->host_and_port);
-                       priv->istream = 
g_data_input_stream_new(g_io_stream_get_input_stream(G_IO_STREAM(priv->plain_conn)));
-                       g_data_input_stream_set_newline_type(priv->istream, G_DATA_STREAM_NEWLINE_TYPE_CR_LF);
-                       priv->ostream = g_io_stream_get_output_stream(G_IO_STREAM(priv->plain_conn));
-                       result = TRUE;
+               priv->remote_address = g_network_address_parse(priv->host_and_port, priv->default_port, 
error);
+               if (priv->remote_address != NULL) {
+                       priv->plain_conn = g_socket_client_connect(priv->sock, priv->remote_address, NULL, 
error);
+                       if (priv->plain_conn != NULL) {
+                               g_debug("connected to %s", priv->host_and_port);
+                               priv->istream = 
g_data_input_stream_new(g_io_stream_get_input_stream(G_IO_STREAM(priv->plain_conn)));
+                               g_data_input_stream_set_newline_type(priv->istream, 
G_DATA_STREAM_NEWLINE_TYPE_CR_LF);
+                               priv->ostream = g_io_stream_get_output_stream(G_IO_STREAM(priv->plain_conn));
+                               result = TRUE;
+                       } else {
+                               g_object_unref(priv->remote_address);
+                               priv->remote_address = NULL;
+                       }
                }
        }
 
@@ -199,6 +206,10 @@ net_client_shutdown(NetClient *client)
                        g_object_unref(priv->plain_conn);
                        priv->plain_conn = NULL;
                }
+               if (priv->remote_address != NULL) {
+                       g_object_unref(priv->remote_address);
+                       priv->remote_address = NULL;
+               }
        }
 }
 
@@ -525,7 +536,7 @@ net_client_start_tls(NetClient *client, GError **error)
        } else if (priv->tls_conn != NULL) {
                g_set_error(error, NET_CLIENT_ERROR_QUARK, (gint) NET_CLIENT_ERROR_TLS_ACTIVE, _("connection 
is already encrypted"));
        } else {
-               priv->tls_conn = g_tls_client_connection_new(G_IO_STREAM(priv->plain_conn), NULL, error);
+               priv->tls_conn = g_tls_client_connection_new(G_IO_STREAM(priv->plain_conn), 
priv->remote_address, error);
                if (priv->tls_conn != NULL) {
                        if (priv->certificate != NULL) {
                                g_tls_connection_set_certificate(G_TLS_CONNECTION(priv->tls_conn), 
priv->certificate);
diff --git a/libnetclient/test/ca_cert.pem b/libnetclient/test/ca_cert.pem
index bf8945b30..d9d1ef07e 100644
--- a/libnetclient/test/ca_cert.pem
+++ b/libnetclient/test/ca_cert.pem
@@ -1,46 +1,68 @@
 -----BEGIN CERTIFICATE-----
-MIIDxjCCAq6gAwIBAgIBATANBgkqhkiG9w0BAQUFADB0MRMwEQYKCZImiZPyLGQB
-GRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRMwEQYDVQQKDApTaW1wbGUg
-SW5jMRcwFQYDVQQLDA5TaW1wbGUgUm9vdCBDQTEXMBUGA1UEAwwOU2ltcGxlIFJv
-b3QgQ0EwHhcNMTYwNTI0MTYxNjU4WhcNMjYwNTI0MTYxNjU4WjB0MRMwEQYKCZIm
-iZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRMwEQYDVQQKDApT
-aW1wbGUgSW5jMRcwFQYDVQQLDA5TaW1wbGUgUm9vdCBDQTEXMBUGA1UEAwwOU2lt
-cGxlIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPn/T4
-w9Ggb9aXhZ5stchfb+gZAnLkYKSZZC/+SryGwToK2HouWCwMUx8Jgg9DeuIjjVEx
-gnuTveVWWWL7QWdIWOrcDYN8XDjS/Rx0brhmDY5q19/CuNPDWMPb5/8SboOmEM4b
-D/S0gsBUI8N7yJ6qYzvtAB5GDBy8LcK+RBp197R5aFlqIUDy5neH2NoA6XU5NcfS
-cHpqs/oJkg0zVksrZ279mGEHJTxtpPVlm7/z153DgxB1XDWUGIbkmzzl8FPrLGWo
-o1gUFs3TfxnYuFl4r2NhwYeVEUcuBYFhJGVbeisV47ynFUV8gHqxaH03DfghaR+6
-WGe4MBmYpM3NTi6jAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
-BTADAQH/MB0GA1UdDgQWBBQ+k/H1yqCqwMnESs4nzdqhHI2IkDAfBgNVHSMEGDAW
-gBQ+k/H1yqCqwMnESs4nzdqhHI2IkDANBgkqhkiG9w0BAQUFAAOCAQEAswaE/9XS
-uVbWyY6CsMry1dfTCzEaTe3odrVe2GM3nU4nowAUqJfqR4JAYjqJim37997n6jbZ
-lK168uFwI/mj4QCY72KixbaSpl7I54MUNXtBtb1/kTwXDeCMFO0Iw1f60Kr8QOeM
-d+aktreCqE+Gss3nmJJ6TT7b/X1UHywlBcO0ZX4y0aDlVWgMqOHxAYF4+Ayxq4El
-MH3+aDItPqnYp1WXfIn/8cYKhdbKjPgZWXVtIzmPHPrAbLQT3DxvPEv4MIwmWx24
-/c4mAvM8TStB+m2/tYZfRflPZ133Nw5zbKHaP1OJgqErIAZCUCHU8tVVBnc/uFHm
-sS+pZL8j9zrzhg==
+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
+RczkgYKIzmZd7Q==
 -----END CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIBAjANBgkqhkiG9w0BAQUFADB0MRMwEQYKCZImiZPyLGQB
-GRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRMwEQYDVQQKDApTaW1wbGUg
-SW5jMRcwFQYDVQQLDA5TaW1wbGUgUm9vdCBDQTEXMBUGA1UEAwwOU2ltcGxlIFJv
-b3QgQ0EwHhcNMTYwNTI0MTYxOTAyWhcNMjYwNTI0MTYxOTAyWjB6MRMwEQYKCZIm
-iZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRMwEQYDVQQKDApT
-aW1wbGUgSW5jMRowGAYDVQQLDBFTaW1wbGUgU2lnbmluZyBDQTEaMBgGA1UEAwwR
-U2ltcGxlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
-AQDQXD9AyJJwmx7Ng/Jo6dJy8xLJnWMWi8MmHOhqig5GPuOPff/iNRnhdU6xdr2j
-v5BCdmHbosnOxPq3RJ9r9wyQv6PukCkPvD/2bePQV+ObqegTR5VlNVBhPoWLda5Y
-hMnLTX/mVjC0duz2x+UcS/hd3Yd/QdVdFMJ0LJvJ96SplyfOAowTmw4jii/dtkl+
-hTGp8xl9+wyi1c/ZFKhq3efgC5ozh5oyMMJ6iziaxecq/Rehk4KWDxlPQ5usFU6n
-ls1lBuBszJfNR1XGTCzlvBR/TWNu1WiZmpXgizIoSehOgc/27G4EvkEa4PlEp6I6
-r5CQrDebSlzJSkyhFnkMZQT/AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV
-HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTuAfbK98FLKXj/yBvsD5owPDo5ijAf
-BgNVHSMEGDAWgBQ+k/H1yqCqwMnESs4nzdqhHI2IkDANBgkqhkiG9w0BAQUFAAOC
-AQEAZYWaIHK+09tQN7IHJZatoeE/06QM/pNZBe5/er3C95zOgis7jCOC+Au4srLf
-+oi8y+i4WPqRQAJKOOIf7nLMQfGqEV1UVfEOiP40I5WmNQDk3E5jFqTRZC42mf1v
-u2XL3FkjSj+LQyLCz80JdYFUn+I6lyvNSkAC2f5IA+aleX628LtyiuLF0T3Vtjul
-95vgaGd8m3Zr3/rGUeTMhMHPEGvTjTcXyOC1Sc85PhChZtGDehhafosJU8vXmVeH
-dCk3xxx2sjBvWxwTM1pdCJ0HzP7vveLhB22b2aPu8dVAiGJVKtWrnVj1whQeC3qr
-IjagpJLKKVbRnz1plUtXsO6YdA==
+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
+wduu/4nH3sMBsLVBa9a0a0bGdw==
 -----END CERTIFICATE-----
diff --git a/libnetclient/test/cert.pem b/libnetclient/test/cert.pem
index 5e93001ba..49d2ad123 100644
--- a/libnetclient/test/cert.pem
+++ b/libnetclient/test/cert.pem
@@ -1,53 +1,89 @@
 -----BEGIN CERTIFICATE-----
-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
+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
+Ync/p4RR
 -----END CERTIFICATE-----
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI4OP1Tt/tut0CAggA
-MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECIspBTzWNkVFBIIEyLOCni+kvMAd
-QKJfyInCrW/buU6vs9hD0CZ3+nYueQd0cssMI5u1dCDKmoj3Evx+8P1rqqkjwgLZ
-UNPC0u1rFkQ8CANHXWSfgadbkLRVD3jCCan7SqnhsZMPV1/DPrupN8lxWmlbfNFe
-Uni5ttHN/YDn6ojm1GYIb9YEWDjjDSUfCgam7aznaGq08b+IfJR0iOTIayqrlgs0
-UjNL0NqEj8nWQS5p1IYM/K5RhBOL85OCK7E+Ytb2b+AY81aaFzYPmY6T5b961IU9
-309OQOoaXfRknIb79Mdy7u/P6/F9N3DgC1Uxzq6WNVd+hbY8mjqqpKUlBPjvN2K4
-uJwBk73KTC69vI3PUIQ7jwF0Rv/zVYqig5UnpP2IgpUYtkGcdTF61K6nLc+bRefz
-JjE0KsxTm/Y06j36Fzk0jCNkyKfcAZI0lXiZ15sST/bfo3LXg9Ut6DRd1UVB2IjC
-9PGkflw5QK5/JYBClE6/rRN9SDq0YdJWY+5d2idP0CFjW5Qy6OBhvH2004FCmFY5
-Q1HrC7eSFCHM0d6Aw8WuR5OpUx5PjGkKmV6WOBnp3Bztw21vI7tKEhC+rKzzTewq
-alwhWUZi+SOgszM5U7X7Zf7DiaGeREgoe/KfsyTIdRj2qlOz/q+GvFsBvg9tu51g
-5vyb1vZ9Js54kf+5DiNMphXR8Q6YiF6m2vliwfwiPml85w3uAUbK/q/Fg1tbwZ5t
-djFIVZD+uesq3WZdaRbZn6/vggg0yCzxEDs9CKTOaZz/UHpf7rO/1+ZGXaX9U0Bm
-SGJIzvuuOK7tpkwHudgxQj16tUBRN+uXgeJiQh8YZlCK+/TSMmyIqsg+xW/W60HT
-13zSvzaKB7/ooQGBlNzAc8hZcbQCiAYCC+8Uz3KszhKTYx2eJSkTplKL9geyYHY0
-pk/vV4YLsbC1FEjzGziq5BDBdmrbByWVV+yl5howN8Rk6B49hy8YgjcFJpmem5Z6
-/oAg/0fbNNVNdf69AG3697wE/3+V/mDjepWrYHg+XDC0DlauZpgFrc0aiOymXFgV
-NN3wKFG0he5DR3GNxkLbo770txXSJdfcDQ7OzKl7rspugMZxjLwNsx/ylL71vcUV
-1F64EOrhgvfeOjrEMrWjPqIgmarYvwmMI5zrwUZoyywVp/A7+jxkMnbwxL7QRYX7
-meoaWbBXvZRYDmNAVIonQ5El8/Fcp8nzvCZcgqbnZ513iHT5EzWLAU8x4uW+2/2q
-RrhxvBSiGWAG2as3G8ucaueMaMKcXdtYNxAko/rE2LEPmiM3LWgsSIDS0uIo/qz5
-ZnoA/Lqy1/iKDsW/8mau0vOn21eUflmAOQFi6tvQjkMN6KGH5VuUqA9G/zB8VDLE
-DHSGsgfk1gEbRe9f790iF4iC4l0WYMpsR9dkggg+jPpLSfsR1FqtHxBrR30t66cv
-d8HrKlLN6BkuQBE8EgOLLLAY2GqtP4kTXCEDWdoTqaLdt4SrjGMlDBg+VOEJ34JK
-njeBRLzJYbfcouF8a868/tRIYcfHS+XK/7roRZBw7w0Idx6htSkVXPMiOS+dTA1Z
-oQU5Ic0lVEaO78vKSgea+3pA1Q4Jh8qH/sGasqKIzL8xS8aj60oIO16Kby7M+uZf
-tVJ4dlH0pc3Ub+bAg8oNEg==
+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
+xAhfPXm/AR++DSgVFD4Vum7LGB1UT/AT
 -----END ENCRYPTED PRIVATE KEY-----
diff --git a/libnetclient/test/cert_u.pem b/libnetclient/test/cert_u.pem
index 363d5b7de..ef385fced 100644
--- a/libnetclient/test/cert_u.pem
+++ b/libnetclient/test/cert_u.pem
@@ -1,51 +1,87 @@
 -----BEGIN CERTIFICATE-----
-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
+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
+LvplZxn5
 -----END CERTIFICATE-----
 -----BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC0M4zArmwHW+26
-5bcSJh2xrrQeS9m7t1CnhUWkwvLH27DuBtZHHsr+oZL5jSVbUoHEod1uk/G0Y711
-DxUp3Pwcn1xN3Bp5F9LoFiEXnpAHrgvyjYM/yTg47fjuNK3yiF/L41hFiU5K7+RH
-4EeNSyRdC0hBqRl3zqiLJjm/nB3SeoLSNwCKpFYa/heu7HAEKVySyimjHfCZMYED
-blZP6R8PFMMqB8PxWfGQQ+Ar0236Jzuv+iLRczye6YCnOH4LD1j9BRQxoTIGc8qn
-CxzhWPrw49npTgErzqPEOGRuANl/09XSiOo770j3yFjHLCn2X2P9G3NudOL1rEtG
-TJPyeRSfAgMBAAECggEBAJiD+OErvysLV04UFro5oHA+WRw7PnFuWckvNx6YETuu
-aTVMfBd9rHmO7wJfv/pm/oYaKXvpo2z17eghd9wSuR7QkiMj4xQSYeMkt6VyAp09
-ZcdIlolqGTe10jZqR786RToflRpld+pc120uGeEwc/p8Dg/kuzV3p5b+J2pRC7yT
-oF/RJX8wxuWMyPyMMUSE5LdbMiNASle1Z0Ei/JCCYqT7+G30qS17DfwTDjaBXG7M
-q/po30br7FSQBpHR4ZAYdpDLNzBS6q0X5ncru/EPDNSWTfhJk88UEZnEnFoHwyfA
-T6mG1AMFqgLxFb4YNK356hOyCAhzmpSxYLSEL8rnkgECgYEA3WwVuOer6L34HGbh
-hzcdL79uJpoXsvxuXWjVsGeg7dr6BJLXTX0aPvTrBx1g5nBpq5JXn6sI+Ki4aKs2
-1bu+ZMuXfeqQC63RViaSUiO7tjFkuy/UDLgK+4lMJ2o+GTtnBc+nA6129eJGCPKP
-0fszpGXEmJKX6qDreoPcTHh3lUECgYEA0FeOoyWNv9Y4z8ykqdho3NBn8wSoBr74
-yrO2JBwWs7CAcK0GFH1ZXG84YfmkyRL+XfYRmnelyZlsUiWUKuT9S1xOEvKPk3OF
-QG1o62UK6zHnadSr8nSTv1p7J4OHinSXrpHaI81JDzMkrIvBFj/juz7RXS7GC7t4
-jWLhPcB00d8CgYEA07O3wSagEtMvGdiz4NgtK63X30iNSDBaRS0qwpMSJtirGxxa
-hlgKdA8vd4n7T9hC8CvnY13gIf8O8eRhdVEf5LdTjKxsNP5nm/sdAzPvEW+AZAiC
-sfZ1abIIAddusCk/gyrbAIUlrEo/s+ZW4+lNou06XrYqUcax3l2cj/DORQECgYA+
-6zJYcu7sEHX3y4WvBXwls4qxCab04pegH8XSAemZOqSPYrGDXpeuIqiUbiAl2WaY
-WcfXLmsTBxJ/fHnSunUEXUv2zOovTaPgYSpebJVvkhKhE2kaP7qe/2RR+pbkaXGl
-dsa6KTT3MirRMSOO5JyR39a6nXWR9Xvitwnu7EBbYQKBgHvAHx2kfxOjlXOd78jv
-LMNMnawEYlIGEn75Dd1mCl5c4MfQxmVqXY0IR+9NxVHmx6osgZnnJe2aKdGvhtCI
-tXPGXVBkCVSRW43O+NK4z6Lx4BBPrKyvwVGNdzXAL43QyhXyYaK2nuGoiwudynaV
-7nENaiFkC1AKBrYo4CdmD7l/
+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
+BrXwsXY2ZPcP/iq/zC2yMQqnTkK748U=
 -----END PRIVATE KEY-----
diff --git a/libnetclient/test/tests.c b/libnetclient/test/tests.c
index 612c514ae..ef05e4d2a 100644
--- a/libnetclient/test/tests.c
+++ b/libnetclient/test/tests.c
@@ -319,7 +319,7 @@ test_basic_crypt(void)
        g_clear_error(&error);
        sput_fail_unless(net_client_set_cert_from_file(basic, "cert_u.pem", NULL) == TRUE, "load cert file w/ 
plain key ok");
        sput_fail_unless(net_client_connect(basic, NULL) == TRUE, "connect ok");
-       sput_fail_unless(net_client_start_tls(basic, NULL) == TRUE, "start tls: ok");
+       sput_fail_unless(net_client_start_tls(basic, &error) == TRUE, "start tls: ok");
        sput_fail_unless(net_client_is_encrypted(basic) == TRUE, "encrypted");
        g_object_unref(basic);
 
@@ -447,15 +447,15 @@ test_smtp(void)
        sput_fail_unless(net_client_smtp_can_dsn(NULL) == FALSE, "NULL client: no dsn");
        sput_fail_unless(net_client_smtp_can_dsn(smtp) == TRUE, "inetsim: can dsn");
 
-       sput_fail_unless(net_client_smtp_send_msg(NULL, msg, NULL) == FALSE, "send msg, NULL client");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, NULL, NULL) == FALSE, "send msg, NULL message");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == FALSE, "send msg: error, no sender");
+       sput_fail_unless(net_client_smtp_send_msg(NULL, msg, NULL, NULL) == FALSE, "send msg, NULL client");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, NULL, NULL, NULL) == FALSE, "send msg, NULL message");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == FALSE, "send msg: error, no 
sender");
        sput_fail_unless(net_client_smtp_msg_set_sender(msg, "some sender com") == TRUE, "set sender ok");
        sput_fail_unless(net_client_smtp_msg_set_sender(msg, "me here com") == TRUE, "replace sender ok");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == FALSE, "send msg: error, no recipient");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == FALSE, "send msg: error, no 
recipient");
        sput_fail_unless(net_client_smtp_msg_add_recipient(msg, "you there com", NET_CLIENT_SMTP_DSN_NEVER)  
== TRUE,
                "add recipient ok (no dsn)");
-       op_res = net_client_smtp_send_msg(smtp, msg, &error);
+       op_res = net_client_smtp_send_msg(smtp, msg, NULL, &error);
        sput_fail_unless((op_res == FALSE) && (error->code == NET_CLIENT_ERROR_SMTP_PERMANENT), "send failed: 
not authenticated");
        g_clear_error(&error);
        g_object_unref(smtp);
@@ -488,7 +488,7 @@ test_smtp(void)
        g_signal_connect(smtp, "auth", G_CALLBACK(get_auth), smtp);
        sput_fail_unless(net_client_smtp_connect(smtp, NULL, NULL) == TRUE, "connect: success");
        msg_buf.sim_error = TRUE;
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == FALSE, "send msg: error in callback");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == FALSE, "send msg: error in 
callback");
        msg_buf.sim_error = FALSE;
        g_object_unref(smtp);
 
@@ -498,7 +498,7 @@ test_smtp(void)
        sput_fail_unless(net_client_smtp_allow_auth(smtp, FALSE, NET_CLIENT_SMTP_AUTH_PLAIN) == TRUE, "force 
auth meth PLAIN");
        g_signal_connect(smtp, "auth", G_CALLBACK(get_auth), smtp);
        sput_fail_unless(net_client_smtp_connect(smtp, NULL, NULL) == TRUE, "connect: success");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == TRUE, "send msg: success");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == TRUE, "send msg: success");
        g_object_unref(smtp);
 
        // STARTTLS required, LOGIN auth
@@ -510,7 +510,7 @@ test_smtp(void)
        g_signal_connect(smtp, "cert-check", G_CALLBACK(check_cert), NULL);
        g_signal_connect(smtp, "auth", G_CALLBACK(get_auth), smtp);
        sput_fail_unless(net_client_smtp_connect(smtp, NULL, NULL) == TRUE, "connect: success");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == TRUE, "send msg: success");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == TRUE, "send msg: success");
        g_object_unref(smtp);
 
        // STARTTLS optional, CRAM-MD5 auth
@@ -523,7 +523,7 @@ test_smtp(void)
        g_signal_connect(smtp, "auth", G_CALLBACK(get_auth), smtp);
        sput_fail_unless(net_client_smtp_connect(smtp, NULL, NULL) == TRUE, "connect: success");
        sput_fail_unless(net_client_smtp_msg_set_dsn_opts(msg, "20170113212711 19833 here com", FALSE) == 
TRUE, "dsn: envid, headers");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == TRUE, "send msg: success");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == TRUE, "send msg: success");
        g_object_unref(smtp);
 
        // STARTTLS, CRAM-SHA1 auth
@@ -535,7 +535,7 @@ test_smtp(void)
        g_signal_connect(smtp, "auth", G_CALLBACK(get_auth), smtp);
        sput_fail_unless(net_client_smtp_connect(smtp, NULL, NULL) == TRUE, "connect: success");
        sput_fail_unless(net_client_smtp_msg_set_dsn_opts(msg, NULL, TRUE) == TRUE, "dsn: no envid, message");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == TRUE, "send msg: success");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == TRUE, "send msg: success");
        g_object_unref(smtp);
 
        // STARTTLS, auto select auth
@@ -547,7 +547,7 @@ test_smtp(void)
        sput_fail_unless(net_client_smtp_connect(smtp, NULL, NULL) == TRUE, "connect: success");
        sput_fail_unless(net_client_smtp_msg_set_dsn_opts(msg, "20170113212711 19833 here com", TRUE) == TRUE,
                "dsn: envid, message");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == TRUE, "send msg: success");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == TRUE, "send msg: success");
        g_object_unref(smtp);
 
        // SSL, auto select auth
@@ -559,7 +559,7 @@ test_smtp(void)
        sput_fail_unless(net_client_smtp_connect(smtp, NULL, NULL) == TRUE, "connect: success");
        sput_fail_unless(net_client_smtp_msg_set_dsn_opts(msg, "20170113212711 19833 here com", TRUE) == TRUE,
                "dsn: envid, message");
-       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL) == TRUE, "send msg: success");
+       sput_fail_unless(net_client_smtp_send_msg(smtp, msg, NULL, NULL) == TRUE, "send msg: success");
        g_object_unref(smtp);
 
        net_client_smtp_msg_free(NULL);
@@ -776,7 +776,7 @@ test_pop3(void)
        g_message("message count: %u", g_list_length(msg_list));
        if (msg_list != NULL) {
                sput_fail_unless(net_client_pop_retr(pop, msg_list, msg_cb, NULL, NULL) == TRUE, "retr ok");
-               sput_fail_unless(net_client_pop_dele(pop, NULL,NULL) == FALSE, "dele w/o message list");
+               sput_fail_unless(net_client_pop_dele(pop, NULL, NULL) == FALSE, "dele w/o message list");
                sput_fail_unless(net_client_pop_dele(pop, msg_list, NULL) == TRUE, "dele ok");
                g_list_free_full(msg_list, (GDestroyNotify) net_client_pop_msg_info_free);
        }
diff --git a/libnetclient/test/valgrind.supp b/libnetclient/test/valgrind.supp
index b8ba29861..b21ebae24 100644
--- a/libnetclient/test/valgrind.supp
+++ b/libnetclient/test/valgrind.supp
@@ -15,3 +15,18 @@
    fun:g_type_register_static
 }
 
+{
+   dl_init
+   Memcheck:Leak
+   match-leak-kinds:all
+   ...
+   fun:_dl_init
+}
+
+{
+   g_type_class_ref
+   Memcheck:Leak
+   match-leak-kinds:all
+   ...
+   fun:g_type_class_ref
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]