[evolution-data-server/wip/mcrha/soup3] e-soup-session: Remove User part of the URI when provided without password



commit 778d9741dd744324f5ca962e320a631364e9104d
Author: Milan Crha <mcrha redhat com>
Date:   Fri Apr 22 09:30:38 2022 +0200

    e-soup-session: Remove User part of the URI when provided without password

 src/libedataserver/e-soup-session.c | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)
---
diff --git a/src/libedataserver/e-soup-session.c b/src/libedataserver/e-soup-session.c
index cb774970c..d27640905 100644
--- a/src/libedataserver/e-soup-session.c
+++ b/src/libedataserver/e-soup-session.c
@@ -829,14 +829,17 @@ e_soup_session_new_message (ESoupSession *session,
                            GError **error)
 {
        SoupMessage *message;
+       GUri *uri;
 
        g_return_val_if_fail (E_IS_SOUP_SESSION (session), NULL);
 
-       message = soup_message_new (method, uri_string);
-       if (!message)
+       uri = g_uri_parse (uri_string, SOUP_HTTP_URI_FLAGS, error);
+       if (!uri)
                return NULL;
 
-       e_soup_session_preset_message (message);
+       message = e_soup_session_new_message_from_uri (session, method, uri, error);
+
+       g_uri_unref (uri);
 
        return message;
 }
@@ -868,7 +871,23 @@ e_soup_session_new_message_from_uri (ESoupSession *session,
 
        g_return_val_if_fail (E_IS_SOUP_SESSION (session), NULL);
 
-       message = soup_message_new_from_uri (method, uri);
+       if (g_uri_get_user (uri) && !g_uri_get_password (uri)) {
+               /* Do not allow setting user without password in the URI, because libsoup3 tries
+                  to authenticate even without password, which can break the code. */
+               GUri *uri_copy;
+
+               uri_copy = soup_uri_copy (uri,
+                       SOUP_URI_USER, NULL,
+                       SOUP_URI_PASSWORD, NULL,
+                       SOUP_URI_NONE);
+
+               message = soup_message_new_from_uri (method, uri_copy);
+
+               g_uri_unref (uri_copy);
+       } else {
+               message = soup_message_new_from_uri (method, uri);
+       }
+
        if (!message)
                return NULL;
 


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