summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* soup-session: Mark soup_session_new() as "transfer full"Chris Talbot2022-08-101-1/+1
| | | | | soup_session_new() returns a new GObject, so it should be marked as "transfer full"
* Update DOAP filePatrick Griffis2022-07-281-10/+3
| | | | Dan and Claudio are not active contributors any more.
* docs: Set namespace in docsPatrick Griffis2022-07-071-1/+2
|
* multithread-test: skip proxy tests if apache is not availableCarlos Garcia Campos2022-07-061-2/+11
| | | | Fixes #286
* multithread-test: show error information in case of request failureCarlos Garcia Campos2022-07-061-2/+6
|
* 3.1.1 (dev)3.1.1Patrick Griffis2022-06-302-1/+21
|
* http2: handle the case of last stream id being max int32 in goawayCarlos Garcia Campos2022-06-301-0/+3
| | | | | | | | This means it's a graceful goaway and we should not allow new requests, another goaway is expected with the actual last stream id that should be processed. Fixes #233
* connection: do not advertise h2 protocol for proxy connectionsCarlos Garcia Campos2022-06-291-1/+2
| | | | We don't support http/2 proxies yet.
* http2: fix runtime warnings when request fails due to IO errorCarlos Garcia Campos2022-06-281-1/+29
| | | | | | | | | | | | | (get:18601): libsoup-WARNING **: 11:25:03.814: (../libsoup/soup-session.c:318):soup_session_dispose: runtime check failed: (soup_connection_manager_get_num_conns (priv->conn_manager) == 0) (get:18601): libsoup-WARNING **: 11:25:03.814: (../libsoup/soup-connection-manager.c:78):soup_host_free: runtime check failed: (host->conns == NULL) This happens because we increase the in use counter of the connection when RST_STREAM message is sent, that is decreased when the frame is actually sent. In case of IO error, like socket timeout, we fail to send the RST_STREAM frame, and the in use counter of the connection is not decreased. We now process all pending closed messages when a frame fails to be sent due to session being closed.
* Fix typo in docsMichael Catanzaro2022-06-241-1/+1
|
* Fix typos in debug messagesMichael Catanzaro2022-06-221-3/+3
|
* docs: third party session features are no longer possibleCarlos Garcia Campos2022-06-211-3/+0
|
* docs: fix section about thread safety in migration guideCarlos Garcia Campos2022-06-201-3/+4
| | | | Fixes #284
* session: remove the asserts to ensure session is disposed in the same thread ↵Carlos Garcia Campos2022-06-081-4/+0
| | | | it was created
* Move http-1-1-required test from http2-test to connection-testCarlos Garcia Campos2022-06-082-39/+40
|
* docs: add a section about thread safetyCarlos Garcia Campos2022-06-083-0/+44
|
* connection: attach the idle timeout source to the session contextCarlos Garcia Campos2022-06-084-18/+40
| | | | | | | The connection thread owner might change, so the context where the idle timeout source was attached might be destroyed while the connection is still alive. So, better use the session context always, since disconnecting at idle state is always safe from the session thread.
* session: remove the features cacheCarlos Garcia Campos2022-06-081-17/+1
| | | | | | It's not thread safe and it's accessed by message IO from multiple threads. Session features are not that many so iterating every time should be fast enough.
* Use GWeakRef instead of g_object_add_weak_pointer()Carlos Garcia Campos2022-06-089-95/+187
| | | | GWeakRef is thread safe
* logger: remove soup_logger_request_body_setup()Carlos Garcia Campos2022-06-083-69/+8
| | | | | We can use the same approach as http2 backend and call soup_logger_log_request_data() from the body stream wrote data callback.
* logger: make SoupLogger thread safeCarlos Garcia Campos2022-06-081-1/+31
|
* hsts: Make SoupHSTSEnforcer thread safeCarlos Garcia Campos2022-06-081-5/+21
|
* cookies: make SoupCookieJar thread safeCarlos Garcia Campos2022-06-082-2/+119
|
* cache: make SoupCache thread safeCarlos Garcia Campos2022-06-082-5/+285
|
* tests: add test to check requests from multiple threadsCarlos Garcia Campos2022-06-082-0/+552
|
* http2: make message IO thread safeCarlos Garcia Campos2022-06-086-25/+96
| | | | | | | | | | | | | nghttp2 session can't be used by multiple threads at the same time, so we need to ensure that only messages from the same thread share the connection. Connections in idle state can be reused from other threads, though but we need to ensure all the pending IO is completed before switching to another thread. When the connection switches to IN_USE state, the current thread becomes the owner of the connection IO. In the case of HTTP/2 there might be session IO not related to a particular message, in that case a thread with no default context is considered synchronous and all IO that is not explicitly sync or async will be sync.
* http2: do not perform sync IO when body stream needs more dataCarlos Garcia Campos2022-06-082-3/+5
| | | | | Add blocking parameter to SoupBodyInputStreamHttp2::need-more-data and only do sync IO when input stream read is blocking too.
* connection-manager: protect connections handling with a mutexCarlos Garcia Campos2022-06-082-46/+125
| | | | | Also use a condition for sync requests to wait until a connection is available.
* connection: make state and in_use member atomicsCarlos Garcia Campos2022-06-081-22/+23
|
* auth-manager: Add a mutex to protect accessing the auth hostsCarlos Garcia Campos2022-06-081-2/+34
|
* session: make message queue handling thread safeCarlos Garcia Campos2022-06-085-22/+172
| | | | | Ensure that queue items are only processed in the same thread they were created.
* Move connection handling from SoupSession to new object SoupConnectionManagerCarlos Garcia Campos2022-06-086-519/+570
| | | | Also reuse the host address for connections to the same host.
* session: remove unsused num_messages from SoupSessionHostCarlos Garcia Campos2022-06-081-10/+0
|
* http2: remove Host and Connection headers from request after a redirect from ↵Carlos Garcia Campos2022-06-071-2/+6
| | | | | | | | HTTP/1 to HTTP/2 Otherwise we get a protocol error since Host header is replaced by :authority pseudo-header field in HTTP/2. Fixes #278
* Add Georgian translationZurab Kargareteli2022-06-062-0/+194
|
* http2: move debug message about request body data read after early returnCarlos Garcia Campos2022-06-021-2/+2
| | | | | In case of cancellation the SoupHTTP2MessageData might have already been destroyed.
* soup-auth-manager: remove authenticate signalCarlos Garcia Campos2022-06-011-34/+0
| | | | | | | | This is a leftover from the soup3 redesign. The plan was to move the authenticate signal from Session and SoupAuthManager to SoupMessage, but I forgot to remove the signal declaration from SoupAuthManager. There's no actual API break because we never emitted the signal, so this can't break anything.
* auth-test: add a test to check bad password given for a sync requestCarlos Garcia Campos2022-06-011-0/+37
|
* soup-auth-manager: SoupAuthNTLM has no 'host' propertyMilan Crha2022-05-241-1/+4
| | | | Correct a typo in the property name, it should be 'authority' instead.
* docs: Update soup_server_listen() to be more clearPatrick Griffis2022-05-231-1/+1
| | | | This API doesn't listen on both ipv4/ipv6 but other APIs do.
* ssl-test: test the peer certificate existsIgnacio Casal Quinteiro2022-05-171-1/+24
|
* server-message: proxy the peer-certificate and peer-certificate-errorsIgnacio Casal Quinteiro2022-05-174-0/+201
|
* negotiate: add link to RFC 4559Michael Catanzaro2022-05-061-1/+2
| | | | | Understanding that RFC 4559 exists would help anybody reading the API docs, and also anybody working on this file.
* negotiate: don't print warnings if response is HTTP 200Michael Catanzaro2022-05-061-3/+14
| | | | | | | | | | | | | If the server sends a success status code, then whatevs, we good. If there's no WWW-Authenticate header, nothing more is required from us. We're done. If we get status code 200 and a WWW-Authenticate header that contains a value, then go ahead and continue to try to handle it. The preexisting code will print a warning if it's invalid, but treat is as success anyway. The preexisting comment explains why this is necessary. Fixes #184
* negotiate: don't request mutual authenticationMichael Catanzaro2022-05-061-1/+1
| | | | | | | | Trying to authenticate the server is cute, but it doesn't work in practice on today's internet. Might as well not do it, because we have to ignore errors if it fails. Reference: #184
* http2: read the request body stream synchronously for sync requestsCarlos Garcia Campos2022-05-061-0/+25
| | | | Fixes #276
* Make sure we don't reuse a http/1 idle connection when http/2 is forcedCarlos Garcia Campos2022-05-032-1/+56
|
* http2: handle HTTP_1_1_REQUIRED stream errorCarlos Garcia Campos2022-04-223-1/+52
| | | | | | Force http version in message to 1.1 and mark it to be restarted. Fixes #275
* message: make it possible to force http/2 tooCarlos Garcia Campos2022-04-224-35/+50
| | | | | | | | Now that apache supports http/2 for tests, we need a way to force http/2 because http1 is still the preferred protocol. This changes the API to force http1 into force http version. It's not exactly the same because force http1 also included http 1.0, but forcing http 1.1 should just work too.
* tests: add support for apache http/2 moduleCarlos Garcia Campos2022-04-223-3/+14
| | | | | | Use mpm_event instead of mpm_prefork because http/2 module doesn't support prefork. For now the server prefers http1 because that's what all the tests using apache expect.