| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Add SoupServerMessage and move there all the server only functionality.
|
| |
|
|
|
|
|
|
| |
Add soup_message_set_request_body() that takes a GInputStream and
soup_message_set_request_body_from_bytes() for convenience that creates
a GMemoryInputStream for the given bytes.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Renamed as soup_message_is_feature_disabled(). We need this in WebKit to
check if cookies are available in an existing SoupMessage.
|
|
|
|
|
|
|
|
|
|
| |
This adds API for web browsers to set extra information to support
same-site cookies.
Note that usage of SoupSession alone does not provide enough
information to reasonably use these at the moment and require
manually setting the information with the extra context a browser
may have.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add SOUP_MESSAGE_DO_NOT_USE_AUTH_CACHE new flag to tell the
SoupAuthManager that it shoudn't use cached credentials to authenticate a
particular message, and that credentials shouldn't be cached either
after a successful authentication.
When SOUP_MESSAGE_DO_NOT_USE_AUTH_CACHE flag is present for a message,
we never query the cached credentials on message starting callback, so
that the SoupAuth is not set there. The SoupAuth is now always set on
the message after authenticate, and the Authorization header updated
right before the message is re-queued when SOUP_MESSAGE_DO_NOT_USE_AUTH_CACHE
is used.
This patch also updates soup_message_set_auth() to no longer update the
Authorization header, but just set the SoupAuth handling the case of
setting the same SoupAuth twice.
https://bugzilla.gnome.org/show_bug.cgi?id=774033
|
|
|
|
|
|
|
|
| |
This way we can as well redefine _SOUP_EXTERN on msvc builds
with the right extern value needed for it. This is the same
we do on glib and gtk+
https://bugzilla.gnome.org/show_bug.cgi?id=757146
|
|
|
|
|
|
|
|
|
|
|
| |
It ensures that a new connection will be created for the message if
there aren't any idle connections available and the current number of
connections have reached any of the limits. When a new dedicated
connection is created, it's automatically removed when the message is
unqueued, without switching to idle state to make sure it can't be
reused.
https://bugzilla.gnome.org/show_bug.cgi?id=744720
|
|
|
|
|
|
|
| |
It's similar to the SoupSession::request-started signal, but it's also
emitted for cached resources.
https://bugzilla.gnome.org/show_bug.cgi?id=731153
|
|
|
|
|
|
|
| |
Make it easier to use the request and response bodies from
introspection by providing accessors to get them as GBytes.
https://bugzilla.gnome.org/show_bug.cgi?id=704105
|
|
|
|
|
|
|
|
| |
Clients can specify a priority for each message added to the SoupSession,
which will determine the order in which it is processed by the
session's message processing queue.
https://bugzilla.gnome.org/show_bug.cgi?id=696277
|
|
|
|
|
|
|
|
|
| |
GNOME_MAINTAINER_MODE_DEFINES apparently sets
LIBSOUP_DISABLE_DEPRECATED, which is now causing various jhbuild
modules to break. "Fix" this by renaming the define (which is only
still there because gtk-doc complains if it's not). The *right* way to
get deprecation warnings/errors now is to define
SOUP_VERSION_MIN_REQUIRED.
|
|
|
|
|
|
| |
gtk-doc expects "Deprecated:" notes in docs to be matched up with some
deprecation-guard #define. So even though we don't want people to use
it any more, add LIBSOUP_DISABLE_DEPRECATED back.
|
|
|
|
|
|
| |
This was added as a hacky way to avoid extra memcpy()s in certain use
cases by reading data directly into a caller-provided buffer. However,
SoupRequest now provides a vastly simpler way of doing this.
|
|
|
|
|
|
| |
When dealing with SoupMessage-related signals in SoupRequest-using
code, it's useful to be able to get the message's associated
SoupRequest.
|
|
|
|
|
|
|
|
|
|
|
| |
Add SOUP_VERSION_X_XX, SOUP_VERSION_MIN_REQUIRED, and
SOUP_VERSION_MAX_ALLOWED, to enable version-based warnings.
Tag all functions with appropriate SOUP_AVAILABLE_IN_ and
SOUP_DEPRECATED_IN_ macros.
Also, fix up some "Since" tags to not refer to unstable releases or
non-.0 point releases.
|
|
|
|
|
|
|
| |
In particular, this lets the app indicate that it's OK to use an
existing connection when sending a POST.
https://bugzilla.gnome.org/show_bug.cgi?id=681493
|
|
|
|
|
|
|
|
|
|
| |
Add a new SOUP_MESSAGE_NEW_CONNECTION flag, and insist on getting a
brand new SoupConnection for any message that has that flag set, or
that uses a non-idempotent method.
Add a test to misc-test for this.
https://bugzilla.gnome.org/show_bug.cgi?id=578990
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Long ago, soup_message_body_set_accumulate() was made into a no-op on
request bodies, because otherwise there would be no body available to
send if the request was restarted. Add a SOUP_MESSAGE_CAN_REBUILD
flag, that indicates that the caller takes responsibility for handling
this, and properly discard chunks if that is set.
Also update chunk-test to test this, and (finally!) remove the FIXME
there, since we are now testing the !accumulate codepath again
properly.
https://bugzilla.gnome.org/show_bug.cgi?id=656650
|
|
|
|
|
|
| |
* GI was parsing as HTTPVersion.SOUP_HTTP_1_0 as HTTPVersion.0
* GI now parses as HTTPVersion.HTTP_1_0 (identifiers can't start with a number
so we append HTTP for good measure)
|
|
|
|
|
| |
These provide more information about the certificate on the other end of
a TLS connection.
|
|
|
|
|
|
|
| |
For use with gobject-introspection in bindings that can't read fields
directly.
Patch from Colin Walters. http://bugzilla.gnome.org/show_bug.cgi?id=551441
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=610374
|
|
|
|
|
|
|
|
|
|
|
|
| |
Through the "accept-policy" property in the jar we can now set one
among three predetermined policies: accept all cookies
(SOUP_COOKIE_JAR_ACCEPT_ALWAYS), accept none
(SOUP_COOKIE_JAR_ACCEPT_NEVER) and only accept cookies set by the main
document we are loading (SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY).
A new property, "first-party", is added to SoupMessage so that the
application using libsoup can inform us of what is the main document
URI for each message that is requested.
|
|
|
|
|
|
|
|
|
| |
Adds SoupContentDecoder, which provides support for decoding "gzip"
Content-Encoding. For now other types are not supported and can't be
added. The SoupCoding interface is private because it will eventually
be replaced with something GConverter-based.
https://bugzilla.gnome.org/show_bug.cgi?id=522772
|
|
|
|
|
|
|
|
|
| |
This allows you to disable specific SoupSessionFeatures for particular
messages.
Also update tests/sniffing-test to test it out.
http://bugzilla.gnome.org/show_bug.cgi?id=574773
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The implementation is based on the draft spec on Content-Type
Processing Model (draft-abarth-mime-sniff-01). It is a spinoff from
the HTML5 spec.
Soup now provides a SoupContentSniffer session feature, which hooks
into the message I/O, and delays emissions of the got-chunk signal to
be able to figure out the Content-Type of messages from the actual
content received, in some cases.
GIO is also used to sniff content, whenever the spec allows further
sniffing.
http://bugzilla.gnome.org/show_bug.cgi?id=572589
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-connection.c: Change the SoupURI properties to
SoupAddress properties.
* libsoup/soup-address.c (soup_address_resolve_async)
(soup_address_resolve_sync): Redo slightly so that multiple
simultaneous attempts to resolve the same address won't cause
problems.
(soup_address_hash_by_name, soup_address_equal_by_name):
(soup_address_hash_by_ip, soup_address_equal_by_ip): methods to
hash addresses by name or IP address
* libsoup/soup-message.c (soup_message_get_address): gets a
SoupAddress corresponding to the message's URI
* libsoup/soup-auth-manager.c (SoupAuthHost): hash hosts by
soup_address_hash_by_name() rather than by URI.
* libsoup/soup-session.c (soup_session_get_connection): pass
addresses to soup_connection_new(), not URIs.
(SoupSessionHost): hash hosts by soup_address_hash_by_ip() rather
than by URI. This requires that the addresses will have already
been resolved by the SoupSession subclasses before calling
soup_session_get_connection(), but also means that now requests
made to different virtual hosts on the same IP address can share a
connection.
* libsoup/soup-message-queue.c (SoupMessageQueueItem): add
address-resolving state
* libsoup/soup-session-sync.c (process_queue_item): resolve the
message's address before getting a connection
* libsoup/soup-session-async.c (run_queue, resolve_msg_addr)
(resolved_msg_addr): resolve the message's address before getting
a connection
(request_restarted): if the message gets requeued to a different
host, we'll need to re-resolve the address.
* libsoup/soup-uri.c (soup_uri_copy_root, soup_uri_host_hash)
(soup_uri_host_equal): No longer needed
* libsoup/soup-dns.c (do_async_callback): disconnect from the
cancellable before invoking the callback
* tests/proxy-test.c (tests): fix the 403 example; hostnames are
resolved by the session now, even when sending to a proxy, so we
need to use a hostname that actually exists
svn path=/trunk/; revision=1179
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-auth-manager-ntlm.c
* libsoup/soup-auth-manager.c
* libsoup/soup-cookie-jar.c
* libsoup/soup-dns.c
* libsoup/soup-logger.c:
* libsoup/soup-message-body.h:
* libsoup/soup-message.h
* libsoup/soup-misc.h:
* libsoup/soup-xmlrpc.h:
* tests/continue-test.c:
* tests/ntlm-test.c: Fix warnings pointed out by gcc -pedantic.
#553976, Sander Dijkhuis.
svn path=/trunk/; revision=1167
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-message-body.c (soup_message_body_set_accumulate)
(soup_message_body_get_accumulate): New, replaces
SOUP_MESSAGE_OVERWRITE_CHUNKS, but can be set on either the
incoming or outgoing message body.
(soup_message_body_get_chunk): update to still dtrt if !accumulate
(soup_message_body_got_chunk, soup_message_body_wrote_chunk): New
methods to handle accumulating/discarding chunks.
* libsoup/soup-message-io.c (read_body_chunk): Use
soup_message_body_got_chunk.
(io_write): Use soup_message_body_wrote_chunk, to discard unneeded
chunks after writing them. Fixes most of #522146.
* libsoup/soup-message.c (soup_message_class_init): add a new
flag, "server-side", to indicate whether the message is
client-side or server-side, and update several methods to use it.
(got_body): Update for accumulate
(soup_message_set_flags): If the caller changes OVERWRITE_CHUNKS,
update the corresponding accumulate flag.
* libsoup/soup-message.h (SOUP_MESSAGE_OVERWRITE_CHUNKS):
deprecated now
* tests/chunk-test.c (do_request_test): Use
soup_message_body_set_accumulate() now, and verify that the chunks
are being discarded appropriately.
(do_response_test): Use
soup_message_body_set_accumulate() instead of OVERWRITE_CHUNKS.
* tests/pull-api.c (do_fully_async_test)
(do_synchronously_async_test): Use
soup_message_body_set_accumulate().
svn path=/trunk/; revision=1126
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-message.c: add a new signal "wrote-body-data" to
address the problem that "wrote-chunk" is not usable for progress
info (especially with non-chunked encoding). #525101, suggested by
Christian Kellner.
* libsoup/soup-message-io.c (write_data): emit wrote-body-data as
appropriate.
(io_write): update so that (a) Content-Length writes can be done
in multiple chunks (as long as the caller explicitly sets the
Content-Length header beforehand), and (b) the body data doesn't
get copied an extra time. Based on a patch from Christian.
* libsoup/soup-message-client-io.c (get_request_headers): Don't
update the Content-Length header if it's already set, even if it
doesn't match the (current) body length.
* tests/chunk-test.c: test some chunk-encoding-related behavior
svn path=/trunk/; revision=1120
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-message.h (SoupMessage): de-constify
msg->reason_phrase; it's no more const than any other struct
field.
* libsoup/soup-message.c (finalize)
(soup_message_cleanup_response, soup_message_set_status)
(soup_message_set_status_full): don't need to cast reason_phase to
non-const when freeing it now
* libsoup/soup-message-client-io.c (parse_response_headers):
Likewise, remove reason-phrase non-const casts
svn path=/trunk/; revision=1118
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2008-02-25 Benjamin Otte <otte@gnome.org>
* libsoup/soup-address.h:
* libsoup/soup-auth-domain.h:
* libsoup/soup-auth.h:
* libsoup/soup-message.h:
* libsoup/soup-server.h:
* libsoup/soup-session-async.h:
* libsoup/soup-session-sync.h:
* libsoup/soup-session.h:
* libsoup/soup-socket.h:
* libsoup/soup-types.h:
* libsoup/soup-uri.h:
use an underscore for struct definitions. Fixes bug #518317.
svn path=/trunk/; revision=1093
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-message.c (soup_message_set_chunk_allocator): New
method that lets the application set a callback function to use to
allocate SoupBuffers for reading into, so as to avoid needing
extra copies.
* libsoup/soup-message-body.c (soup_buffer_new_with_owner): new,
to create a SoupBuffer pointing to memory owned by another object,
with a GDestroyNotify to unref/free that object when the
SoupBuffer is freed.
(soup_buffer_get_owner): Returns the owner of a buffer created
with soup_buffer_new_with_owner.
(soup_buffer_free, etc): update SoupBuffer code for owned buffers.
Suggested by Wouter Cloetens, #513810.
* tests/simple-httpd.c (do_get): Use mmap() and
soup_buffer_new_with_owner(), as a demo/test.
svn path=/trunk/; revision=1075
|
|
|
|
|
|
| |
* Merge libsoup-2.4 branch to trunk
svn path=/trunk/; revision=1041
|
|
|
|
|
|
|
|
|
| |
2007-05-16 Jonathon Jongsma <jjongsma@gnome.org>
* libsoup/*.h: add G_BEGIN_DECLS / G_END_DECLS to all installed
headers so that libsoup can be used from C++ programs. #438776
svn path=/trunk/; revision=925
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-server-message.c (soup_server_message_init):
initialize encoding to SOUP_TRANSFER_CONTENT_LENGTH rather than
SOUP_TRANSFER_UNKNOWN, since SOUP_TRANSFER_UNKNOWN has never
actually worked here, and so there was an undocumented requirement
that you manually set the encoding on every response
(which SoupServer itself was not doing on internal errors).
Problem pointed out by Dennis Jacobfeuerborn on libsoup-list.
(soup_server_message_set_encoding): reject the new
SoupTransferEncoding values, for compatibility
* libsoup/soup-message.h (SoupTransferEncoding): Clarify that
SOUP_TRANSFER_UNKNOWN is essentially an error value, since in the
public API, it always has been, due to bugs. Add some new values,
currently just for internal use: SOUP_TRANSFER_NONE (for cases
like HEAD which never have a body), SOUP_TRANSFER_EOF (to replace
SOUP_TRANSFER_UNKNOWN), and SOUP_TRANSFER_BYTERANGES (which isn't
actually implemented yet).
* libsoup/soup-message.c (soup_message_get_request_encoding,
soup_message_get_response_encoding): figure out the body encoding
being used by the request/response, including all the tricky
cases like HEAD/1xx/etc.
(soup_message_is_keepalive): if the response encoding is
SOUP_TRANSFER_EOF, then the message isn't keepalive.
* libsoup/soup-message-client-io.c (parse_response_headers): use
soup_message_get_response_encoding.
* libsoup/soup-message-server-io.c (parse_request_headers): use
soup_message_get_request_encoding.
(get_response_headers): use both soup_server_message_get_encoding
and soup_message_get_response_encoding, to properly distinguish
between the wire encoding and the alleged-by-headers encoding
(which differ for HEAD, etc).
* libsoup/soup-message-io.c (io_error, read_body_chunk):
s/SOUP_TRANSFER_UNKNOWN/SOUP_TRANSFER_EOF/.
(io_body_state): if encoding is SOUP_TRANSFER_NONE, jump right to
SOUP_MESSAGE_IO_STATE_FINISHING.
* libsoup/soup-server.c (request_finished): Check
soup_socket_is_connected() *before* soup_message_is_keepalive(),
since the message will be invalid if the client unexpectedly
dropped the connection.
* tests/simple-httpd.c (server_callback): handle HEAD requests.
Remove no-longer-necessary soup_server_message_set_encoding()
call.
* tests/get.c: add -d (debug) flag to print headers, and -h flag
to do a HEAD rather than GET
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-message-io.c (soup_message_io_in_progress): tests
if IO is currently in progress on a message.
* libsoup/soup-session-async.c (run_queue): don't process messages
that are io_in_progress. #342545, fix based on analysis from Wang
Xin. (In the future we may want to re-fix this by adding a
REQUEUED message status separate from QUEUED.)
|
|
|
|
|
|
|
| |
* libsoup/*.[ch]: add/fix gtk-doc comments, make functions match
prototypes, etc
* docs/reference/*: update, fix, etc
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.in: require glib-2.0 >= 2.4.0
* libsoup/*.c: use G_DEFINE_TYPE and
g_type_class_add_private/G_TYPE_INSTANCE_GET_PRIVATE
* libsoup/soup-types.h: kill SOUP_MAKE_TYPE and
SOUP_MAKE_TYPE_WITH_IFACE
* tests/revserver.c: use GThread. (patch from tml)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/*: add/fix lots of gtk-doc comments
* libsoup/soup-misc.c (soup_str_case_hash, soup_str_case_equal):
Fix bug noticed while documenting. (We were using the
locale-case-insensitive functions rather than the g_ascii_ ones.)
* libsoup/soup-message.h (SoupMessageFlags): remove the (never
implemented) NO_PIPELINE and NO_COOKIE flags.
* docs/reference/tmpl/*.sgml: Regenerate, fill in some stuff.
There are still problems here with gtk-doc not recognizing many of
the objects in libsoup...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libsoup/soup-socket.c: Lots of thread-safety stuff, primarly so
you can disconnect a socket from one thread while doing I/O in
another.
* libsoup/soup-message-io.c (soup_message_io_cancel): Split into
soup_message_io_stop() and io_cleanup(), to separate out the "stop
reading/writing" and "free data" phases to allow thread-safe
synchronous cancellation.
(soup_message_io_finished): call both soup_message_io_stop() and
io_cleanup()
(io_error): Only set SOUP_STATUS_IO_ERROR on the message if it
doesn't already have a transport error status (eg, CANCELLED).
(new_iostate): Call io_cleanup() if needed.
* libsoup/soup-status.h: add "SOUP_STATUS_NONE" for 0, to make it
clearer that it's not a status.
* libsoup/soup-message.c (finalize, restarted, finished,
soup_message_set_uri): s/soup_message_io_cancel/soup_message_io_stop/
(soup_message_cleanup_response): s/0/SOUP_STATUS_NONE/
* libsoup/soup-connection.c (send_request): Remove
soup_message_io_cancel call.
* libsoup/soup-session-sync.c (send_message): Connect to the
connection's "disconnected" signal rather than using a weak ref,
since that's what we really care about, and it's possible that the
connection may have an extra ref on it somewhere that would keep
it from being destroyed even if it was disconnected.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.in: Add gthread to glib check
* libsoup/soup-session.c: Make this an abstract class.
* libsoup/soup-session-async.c: A SoupSession class for
asynchronous gmain-based operation; replaces the old SoupSession.
* libsoup/soup-session-sync.c: A SoupSession class for synchronous
blocking operation for use with threaded apps.
* libsoup/soup-types.h, libsoup/soup.h: add the new session
subclasses
* libsoup/soup-connection.c (soup_connection_connect_sync): Don't
try to unref the socket if the socket creation fails.
(soup_connection_reserve): New, to explicitly mark a connection as
being in use without queueing a message on it.
* libsoup/soup-dns.c (check_hostent): Oof. Fix the logic of the
"block" flag to not be reversed.
* libsoup/soup-message.c (finished): set status to FINISHED here.
(soup_message_cancel): Gone; needs to be done at the session
level.
* libsoup/soup-message-queue.c: Add a mutex and make all of the
operations thread-safe.
* libsoup/soup-socket.c (disconnect_internal): Make this
thread-safe.
(soup_socket_connect): Make the sync case work correctly.
* libsoup/Makefile.am: add the SoupSession subclasses
* tests/Makefile.am: libsoup depends on libgthread now, so
revserver doesn't need to explicitly.
* tests/get.c, tests/auth-test.c, tests/simple-proxy.c: Use
soup_session_async_new().
|