libsoup r1071 - in trunk: . libsoup tests
- From: danw svn gnome org
- To: svn-commits-list gnome org
- Subject: libsoup r1071 - in trunk: . libsoup tests
- Date: Sun, 3 Feb 2008 03:13:14 +0000 (GMT)
Author: danw
Date: Sun Feb 3 03:13:14 2008
New Revision: 1071
URL: http://svn.gnome.org/viewvc/libsoup?rev=1071&view=rev
Log:
* libsoup/soup-session.c: fix default connections-per-host again;
it was defined in two places. Add SOUP_SESSION_USER_AGENT property
(setup_message): set the User-Agent request header on the request
* libsoup/soup-server.c: add SOUP_SERVER_SERVER_HEADER property
(start_request): set the Server response header on the request.
* tests/get.c:
* tests/simple-httpd.c: set the User-Agent/Server headers
Modified:
trunk/ChangeLog
trunk/libsoup/soup-server.c
trunk/libsoup/soup-server.h
trunk/libsoup/soup-session.c
trunk/libsoup/soup-session.h
trunk/tests/get.c
trunk/tests/simple-httpd.c
Modified: trunk/libsoup/soup-server.c
==============================================================================
--- trunk/libsoup/soup-server.c (original)
+++ trunk/libsoup/soup-server.c Sun Feb 3 03:13:14 2008
@@ -95,6 +95,8 @@
char *ssl_cert_file, *ssl_key_file;
SoupSSLCredentials *ssl_creds;
+ char *server_header;
+
GMainLoop *loop;
SoupSocket *listen_sock;
@@ -110,6 +112,8 @@
} SoupServerPrivate;
#define SOUP_SERVER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SOUP_TYPE_SERVER, SoupServerPrivate))
+#define SOUP_SERVER_SERVER_HEADER_BASE "libsoup/" PACKAGE_VERSION
+
enum {
PROP_0,
@@ -119,6 +123,7 @@
PROP_SSL_KEY_FILE,
PROP_ASYNC_CONTEXT,
PROP_RAW_PATHS,
+ PROP_SERVER_HEADER,
LAST_PROP
};
@@ -161,6 +166,8 @@
if (priv->ssl_creds)
soup_ssl_free_server_credentials (priv->ssl_creds);
+ g_free (priv->server_header);
+
if (priv->listen_sock)
g_object_unref (priv->listen_sock);
@@ -348,6 +355,14 @@
"If %TRUE, percent-encoding in the Request-URI path will not be automatically decoded.",
FALSE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property (
+ object_class, PROP_SERVER_HEADER,
+ g_param_spec_string (SOUP_SERVER_SERVER_HEADER,
+ "Server header",
+ "Server header",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
}
static GObject *
@@ -406,6 +421,7 @@
const GValue *value, GParamSpec *pspec)
{
SoupServerPrivate *priv = SOUP_SERVER_GET_PRIVATE (object);
+ const char *header;
switch (prop_id) {
case PROP_PORT:
@@ -434,6 +450,21 @@
case PROP_RAW_PATHS:
priv->raw_paths = g_value_get_boolean (value);
break;
+ case PROP_SERVER_HEADER:
+ g_free (priv->server_header);
+ header = g_value_get_string (value);
+ if (!header)
+ priv->server_header = NULL;
+ else if (!*header) {
+ priv->server_header =
+ g_strdup (SOUP_SERVER_SERVER_HEADER_BASE);
+ } else if (g_str_has_suffix (header, " ")) {
+ priv->server_header =
+ g_strdup_printf ("%s%s", header,
+ SOUP_SERVER_SERVER_HEADER_BASE);
+ } else
+ priv->server_header = g_strdup (header);
+ break;
default:
break;
}
@@ -464,6 +495,9 @@
case PROP_RAW_PATHS:
g_value_set_boolean (value, priv->raw_paths);
break;
+ case PROP_SERVER_HEADER:
+ g_value_set_string (value, priv->server_header);
+ break;
default:
break;
}
@@ -735,6 +769,7 @@
static void
start_request (SoupServer *server, SoupClientContext *client)
{
+ SoupServerPrivate *priv = SOUP_SERVER_GET_PRIVATE (server);
SoupMessage *msg;
soup_client_context_cleanup (client);
@@ -743,6 +778,10 @@
msg = g_object_new (SOUP_TYPE_MESSAGE, NULL);
soup_message_headers_set_encoding (msg->response_headers,
SOUP_ENCODING_CONTENT_LENGTH);
+ if (priv->server_header) {
+ soup_message_headers_append (msg->response_headers, "Server",
+ priv->server_header);
+ }
g_signal_connect (msg, "got_headers", G_CALLBACK (got_headers), client);
g_signal_connect (msg, "got_body", G_CALLBACK (call_handler), client);
Modified: trunk/libsoup/soup-server.h
==============================================================================
--- trunk/libsoup/soup-server.h (original)
+++ trunk/libsoup/soup-server.h Sun Feb 3 03:13:14 2008
@@ -62,6 +62,7 @@
#define SOUP_SERVER_SSL_KEY_FILE "ssl-key-file"
#define SOUP_SERVER_ASYNC_CONTEXT "async-context"
#define SOUP_SERVER_RAW_PATHS "raw-paths"
+#define SOUP_SERVER_SERVER_HEADER "server-header"
SoupServer *soup_server_new (const char *optname1,
...) G_GNUC_NULL_TERMINATED;
Modified: trunk/libsoup/soup-session.c
==============================================================================
--- trunk/libsoup/soup-session.c (original)
+++ trunk/libsoup/soup-session.c Sun Feb 3 03:13:14 2008
@@ -55,6 +55,8 @@
SoupMessageQueue *queue;
+ char *user_agent;
+
SoupAuthManager *auth_manager;
SoupAuthManagerNTLM *ntlm_manager;
@@ -92,7 +94,9 @@
extern SoupURI *soup_uri_copy_root (SoupURI *uri);
#define SOUP_SESSION_MAX_CONNS_DEFAULT 10
-#define SOUP_SESSION_MAX_CONNS_PER_HOST_DEFAULT 4
+#define SOUP_SESSION_MAX_CONNS_PER_HOST_DEFAULT 2
+
+#define SOUP_SESSION_USER_AGENT_BASE "libsoup/" PACKAGE_VERSION
G_DEFINE_TYPE (SoupSession, soup_session, G_TYPE_OBJECT)
@@ -114,6 +118,7 @@
PROP_SSL_CA_FILE,
PROP_ASYNC_CONTEXT,
PROP_TIMEOUT,
+ PROP_USER_AGENT,
LAST_PROP
};
@@ -296,7 +301,7 @@
"The maximum number of connections that the session can open at once",
1,
G_MAXINT,
- 10,
+ SOUP_SESSION_MAX_CONNS_DEFAULT,
G_PARAM_READWRITE));
g_object_class_install_property (
object_class, PROP_MAX_CONNS_PER_HOST,
@@ -305,7 +310,7 @@
"The maximum number of connections that the session can open at once to a given host",
1,
G_MAXINT,
- 2,
+ SOUP_SESSION_MAX_CONNS_PER_HOST_DEFAULT,
G_PARAM_READWRITE));
g_object_class_install_property (
object_class, PROP_USE_NTLM,
@@ -334,6 +339,13 @@
"Value in seconds to timeout a blocking I/O",
0, G_MAXUINT, 0,
G_PARAM_READWRITE));
+ g_object_class_install_property (
+ object_class, PROP_USER_AGENT,
+ g_param_spec_string (SOUP_SESSION_USER_AGENT,
+ "User-Agent string",
+ "User-Agent string",
+ NULL,
+ G_PARAM_READWRITE));
}
static gboolean
@@ -369,7 +381,7 @@
SoupURI *uri;
gboolean need_abort = FALSE;
gboolean ca_file_changed = FALSE;
- const char *new_ca_file;
+ const char *new_ca_file, *user_agent;
switch (prop_id) {
case PROP_PROXY_URI:
@@ -433,6 +445,21 @@
case PROP_TIMEOUT:
priv->timeout = g_value_get_uint (value);
break;
+ case PROP_USER_AGENT:
+ g_free (priv->user_agent);
+ user_agent = g_value_get_string (value);
+ if (!user_agent)
+ priv->user_agent = NULL;
+ else if (!*user_agent) {
+ priv->user_agent =
+ g_strdup (SOUP_SESSION_USER_AGENT_BASE);
+ } else if (g_str_has_suffix (user_agent, " ")) {
+ priv->user_agent =
+ g_strdup_printf ("%s%s", user_agent,
+ SOUP_SESSION_USER_AGENT_BASE);
+ } else
+ priv->user_agent = g_strdup (user_agent);
+ break;
default:
break;
}
@@ -467,6 +494,9 @@
case PROP_TIMEOUT:
g_value_set_uint (value, priv->timeout);
break;
+ case PROP_USER_AGENT:
+ g_value_set_string (value, priv->user_agent);
+ break;
default:
break;
}
@@ -626,6 +656,12 @@
gpointer data)
{
SoupSession *session = data;
+ SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session);
+
+ if (priv->user_agent) {
+ soup_message_headers_replace (msg->request_headers,
+ "User-Agent", priv->user_agent);
+ }
g_signal_emit (session, signals[REQUEST_STARTED], 0,
msg, soup_connection_get_socket (conn));
Modified: trunk/libsoup/soup-session.h
==============================================================================
--- trunk/libsoup/soup-session.h (original)
+++ trunk/libsoup/soup-session.h Sun Feb 3 03:13:14 2008
@@ -62,6 +62,7 @@
#define SOUP_SESSION_SSL_CA_FILE "ssl-ca-file"
#define SOUP_SESSION_ASYNC_CONTEXT "async-context"
#define SOUP_SESSION_TIMEOUT "timeout"
+#define SOUP_SESSION_USER_AGENT "user-agent"
GMainContext *soup_session_get_async_context(SoupSession *session);
Modified: trunk/tests/get.c
==============================================================================
--- trunk/tests/get.c (original)
+++ trunk/tests/get.c Sun Feb 3 03:13:14 2008
@@ -286,11 +286,13 @@
session = soup_session_sync_new_with_options (
SOUP_SESSION_SSL_CA_FILE, cafile,
SOUP_SESSION_PROXY_URI, proxy,
+ SOUP_SESSION_USER_AGENT, "get ",
NULL);
} else {
session = soup_session_async_new_with_options (
SOUP_SESSION_SSL_CA_FILE, cafile,
SOUP_SESSION_PROXY_URI, proxy,
+ SOUP_SESSION_USER_AGENT, "get ",
NULL);
}
Modified: trunk/tests/simple-httpd.c
==============================================================================
--- trunk/tests/simple-httpd.c (original)
+++ trunk/tests/simple-httpd.c Sun Feb 3 03:13:14 2008
@@ -197,6 +197,7 @@
}
server = soup_server_new (SOUP_SERVER_PORT, port,
+ SOUP_SERVER_SERVER_HEADER, "simple-httpd ",
NULL);
if (!server) {
fprintf (stderr, "Unable to bind to server port %d\n", port);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]