New. An interface for objects that want to act on every message passing
authorDan Winship <danw@src.gnome.org>
Fri, 19 Dec 2003 20:54:38 +0000 (20:54 +0000)
committerDan Winship <danw@src.gnome.org>
Fri, 19 Dec 2003 20:54:38 +0000 (20:54 +0000)
commite81e61c7612793a1fa20812c2a329726dd29a2c8
treec7954ffdcff304ad30716a0db6a0fda5dd7838d4
parent654248bcf1cf2fc71d7df3e21cb7c551964b8a08
New. An interface for objects that want to act on every message passing

* libsoup/soup-message-filter.c: New. An interface for objects
that want to act on every message passing through a session.
(Initially being used for authentication, but could also be used
for cache handling, cookie management, etc.)

* libsoup/soup-connection.c (class_init, etc): Add a message
filter property.
(send_request): If the connection has a message filter set, run
it on the message before sending it.
(soup_connection_connect_async, etc): When setting up a tunnel, if
we get back a 407 and the session tries to requeue the message,
either re-send it, or return SOUP_STATUS_TRY_AGAIN (depending on
whether or not the proxy closed the connection).
(soup_connection_connect_sync): Likewise
(send_request, request_done): Ref/unref the connection

* libsoup/soup-session.c (soup_session_get_type): Implement the
SoupMessageFilter interface.
(soup_session_get_connection): Use the session as the connection's
message filter
(soup_session_add_filter, soup_session_remove_filter): Add/remove
filters from the session
(setup_message): do auth handling, and call each of the session's
filters' setup_message methods as well.
(soup_session_send_message_via): No longer needed.
(connect_result): Handle SOUP_STATUS_TRY_AGAIN.

* libsoup/soup-session-async.c (run_queue): Use
soup_connection_send_request, since soup_session_send_message_via
is gone now.

* libsoup/soup-session-sync.c (send_message): Likewise

* libsoup/soup-message.c (soup_message_is_keepalive): A successful
response to a CONNECT is always keepalive, even if it's HTTP/1.0
with no Connection header.

* libsoup/soup-status.h: add SOUP_STATUS_TRY_AGAIN

* libsoup/soup-types.h: Add SoupMessageFilter, and macros for
gobject interface types.

* tests/get.c (main): Add a -p flag to specify a proxy

* tests/simple-proxy.c: Fix #includes
16 files changed:
ChangeLog
libsoup/Makefile.am
libsoup/soup-connection.c
libsoup/soup-connection.h
libsoup/soup-message-filter.c [new file with mode: 0644]
libsoup/soup-message-filter.h [new file with mode: 0644]
libsoup/soup-message.c
libsoup/soup-session-async.c
libsoup/soup-session-sync.c
libsoup/soup-session.c
libsoup/soup-session.h
libsoup/soup-status.c
libsoup/soup-status.h
libsoup/soup-types.h
tests/get.c
tests/simple-proxy.c