diff --git a/src/utils/gcal-source-discoverer.c b/src/utils/gcal-source-discoverer.c index 53cb0b94..b5bda6a7 100644 --- a/src/utils/gcal-source-discoverer.c +++ b/src/utils/gcal-source-discoverer.c @@ -281,7 +281,7 @@ discover_file_in_thread (DiscovererData *data, uri_str = g_uri_to_string_partial (guri, G_URI_HIDE_PASSWORD); GCAL_TRACE_MSG ("Creating request for %s", uri_str); - session = soup_session_new_with_options ("timeout", 10, NULL); + session = gcal_create_soup_session (); message = soup_message_new_from_uri ("GET", guri); g_signal_connect (message, "authenticate", G_CALLBACK (on_soup_message_authenticate_cb), data); diff --git a/src/utils/gcal-utils.c b/src/utils/gcal-utils.c index 89b06392..d2721b51 100644 --- a/src/utils/gcal-utils.c +++ b/src/utils/gcal-utils.c @@ -32,6 +32,7 @@ #include #include +#include #include @@ -1329,3 +1330,29 @@ gcal_get_service_name_from_url (const gchar *url) return NULL; } + +/** + * gcal_create_soup_session: + * +* Creates a new #SoupSession with correct default settings. + * + * Returns: (transfer full): a new #SoupSession + */ +SoupSession * +gcal_create_soup_session (void) +{ + g_autoptr (SoupSession) session = NULL; + + session = soup_session_new (); + + /* Set up a 10 seconds default timeout, as 60 is too long for fail-fast performance in general. + * Individual parts of the code can always override this if needed. */ + soup_session_set_timeout (session, 10); + + /* RFC2616 states HTTP requests "should" contain the User-Agent header. In practice though, in our situation + * User-Agent is mandatory, or restrictive "web application firewalls" can do unexpected things with our request. + * The trailing " - " lets libsoup append its name and version for us. */ + soup_session_set_user_agent (session, "GNOME Calendar/" PACKAGE_VERSION " - "); + + return g_steal_pointer (&session); +} diff --git a/src/utils/gcal-utils.h b/src/utils/gcal-utils.h index 8572efc6..721847a2 100644 --- a/src/utils/gcal-utils.h +++ b/src/utils/gcal-utils.h @@ -139,4 +139,6 @@ gboolean gcal_is_valid_event_name (const gchar const gchar* gcal_get_service_name_from_url (const gchar *url); +SoupSession * gcal_create_soup_session (void); + #endif /* __GCAL_UTILS_H__ */ diff --git a/tests/test-server.c b/tests/test-server.c index ad8382ce..833c7310 100644 --- a/tests/test-server.c +++ b/tests/test-server.c @@ -104,7 +104,7 @@ server_request_no_auth_empty (void) server = init_server (); uri = gcal_simple_server_get_uri (server); - session = soup_session_new (); + session = gcal_create_soup_session (); message = soup_message_new_from_uri ("GET", uri); g_signal_connect (message, "authenticate", G_CALLBACK (fail_authenticate_cb), server); @@ -129,7 +129,7 @@ server_request_no_auth_ics (void) uri = gcal_simple_server_get_uri (server); e_util_change_uri_component (&uri, SOUP_URI_PATH, "/public/calendar.ics"); - session = soup_session_new (); + session = gcal_create_soup_session (); message = soup_message_new_from_uri ("GET", uri); g_signal_connect (message, "authenticate", G_CALLBACK (fail_authenticate_cb), server); @@ -154,7 +154,7 @@ server_request_no_auth_calendar (void) uri = gcal_simple_server_get_uri (server); e_util_change_uri_component (&uri, SOUP_URI_PATH, "/public/calendar"); - session = soup_session_new (); + session = gcal_create_soup_session (); message = soup_message_new_from_uri ("GET", uri); g_signal_connect (message, "authenticate", G_CALLBACK (fail_authenticate_cb), server); @@ -179,7 +179,7 @@ server_request_auth_empty (void) uri = gcal_simple_server_get_uri (server); e_util_change_uri_component (&uri, SOUP_URI_PATH, "/secret-area"); - session = soup_session_new (); + session = gcal_create_soup_session (); message = soup_message_new_from_uri ("GET", uri); g_signal_connect (message, "authenticate", G_CALLBACK (authenticate_cb), server); @@ -204,7 +204,7 @@ server_request_auth_calendar (void) uri = gcal_simple_server_get_uri (server); e_util_change_uri_component (&uri, SOUP_URI_PATH, "/secret-area/calendar"); - session = soup_session_new (); + session = gcal_create_soup_session (); message = soup_message_new_from_uri ("GET", uri); g_signal_connect (message, "authenticate", G_CALLBACK (authenticate_cb), server); @@ -229,7 +229,7 @@ server_request_auth_ics (void) uri = gcal_simple_server_get_uri (server); e_util_change_uri_component (&uri, SOUP_URI_PATH, "/secret-area/calendar.ics"); - session = soup_session_new (); + session = gcal_create_soup_session (); message = soup_message_new_from_uri ("GET", uri); g_signal_connect (message, "authenticate", G_CALLBACK (authenticate_cb), server); @@ -254,7 +254,7 @@ server_request_auth_wrong (void) uri = gcal_simple_server_get_uri (server); e_util_change_uri_component (&uri, SOUP_URI_PATH, "/secret-area"); - session = soup_session_new (); + session = gcal_create_soup_session (); message = soup_message_new_from_uri ("GET", uri); g_signal_connect (message, "authenticate", G_CALLBACK (wrong_authenticate_cb), server);