Commit graph

138 commits

Author SHA1 Message Date
Falco Peijnenburg
2967bfd083 servant-client: Fixes MVar blocking exception
Uses the fix mentioned by @arianvp in
https://github.com/haskell-servant/servant/pull/425.

See also
https://github.com/haskell-servant/servant/issues/51#issuecomment-250737727

The cause of the issue very is similar to the issue described
in this blog post:
https://www.fpcomplete.com/blog/2016/06/async-exceptions-stm-deadlocks

The main thread creates a waiter, creates an asynchronous callback which is
called when the `readyState` of the request changes. When the readyState
changes to 4, which means 'request finished', the waiter MVar is put.
The main thread takes the MVar and continues to do stuff with the response.

The problem is that the `readyState` can change to 4 more than once,
for some reason. The second time this happens, the waiter MVar can be put
again, since the main thread took it. The main thread, however, won't take
it again. After all, it only needed to take the MVar once to know that the
request was finished. The third time `readyState` is set to 4, the putMVar
would block, causing the following exception to be thrown:

```
thread blocked indefinitely in an MVar operation
```

Since state 4 should really mean that the response is ready, it seems
appropriate to decide that all changes of the state to 4 after the initial one
can be safely ignored.
2016-10-02 12:37:33 +02:00
Sönke Hahn
bc1a3e7faa bump version 2016-09-17 11:47:57 -04:00
Sönke Hahn
d7d22b8050 tweake changelogs for the upcoming release 2016-09-17 11:46:26 -04:00
Julian K. Arni
501212e6b9 Review fixes 2016-09-12 20:40:03 -03:00
Julian K. Arni
0870b3b2f5 Remove FromFormUrlEncoded and ToFormUrlEncoded.
In favor of FromForm and ToForm from the new version of http-api-data.
2016-09-12 18:34:18 -03:00
Oleg Grenrus
f44b336bf1 Support http-api-data-0.3 2016-09-12 18:34:00 -03:00
Christian Klinger
7a7f7d7cf5 changed ClientM to be a Reader of ClientEnv 2016-09-08 00:17:13 +02:00
Julian K. Arni
bf824a3889 Bump version to 0.8.1 2016-09-02 13:09:47 -03:00
Sönke Hahn
b1f143010e servant-client: fix compilation when building with http-client < 0.4.30 2016-08-14 20:27:50 +02:00
Oleg Grenrus
6999b00297 Support aeson-1 2016-08-07 20:12:09 +03:00
Oleg Grenrus
197ed0548a Use parseRequest 2016-07-18 14:40:05 +02:00
Jonathan Lange
d945c99f82 Test whole list in CaptureAll client tests 2016-07-11 14:47:05 +01:00
Jonathan Lange
7fb9a95711 servant-client support for CaptureAll 2016-07-11 14:46:31 +01:00
Sönke Hahn
8eb412ff23 bump version 2016-07-10 17:21:36 +02:00
Sönke Hahn
d45c7c5897 support http-client-0.5 2016-07-09 18:36:00 +02:00
Oleg Grenrus
a7a3294752 Add bounds to servant, servant-server and servant-clients
(cherry picked from commit a0d5ed9aea)
2016-07-09 18:33:19 +02:00
Oleg Grenrus
dc9afe6405 Add upper bounds http-client <0.5 2016-07-05 12:27:30 +03:00
Sönke Hahn
5effdfdbbb Rename type variables 'layout' and 'sublayout' to 'api' 2016-07-03 22:46:46 +08:00
Julian K. Arni
023368c396 CPP deprecated parseUrl function. 2016-07-03 22:43:52 +08:00
Julian K. Arni
bd3670f54d Remove host param from servant-client README. 2016-05-25 17:38:25 +02:00
Julian Arni
ea36656dcd Merge pull request #505 from haskell-servant/jkarni/reexport-application
Re-export Application.
2016-05-12 10:38:46 +02:00
Julian K. Arni
211254512e Re-export Application. 2016-05-11 12:17:36 +02:00
Sönke Hahn
d8a4cce691 version bump 2016-05-11 12:09:25 +08:00
Sönke Hahn
5579c21050 added changelog entries for 0.7.1 2016-05-11 12:09:25 +08:00
Julian K. Arni
7174f5185d Changelog updates for GHC 8.0 support. 2016-05-10 22:45:29 +02:00
Oleg Grenrus
008f2434ee Add -Wno-redundant-constraints 2016-05-10 19:09:59 +03:00
Sönke Hahn
e0216781b0 set the homepage to readthedocs 2016-04-22 14:12:21 +08:00
Sönke Hahn
29be5761ce servant-client: add Eq instance for ServantError 2016-04-21 15:27:08 +08:00
Sönke Hahn
b26bbfccda travis: enable -Wall -Werror 2016-04-21 13:06:10 +08:00
Alexander Bondarenko
b13ecd6098
Add missing changelogs and readme to cabal in servant, servant-client. 2016-04-16 16:51:38 +03:00
Sönke Hahn
ab6131d733 version bump 2016-04-15 18:35:17 +08:00
Luke Cycon
21546991af Introduce a Handler alias for ExceptT ServantErr IO
Fixes #434
2016-04-11 22:27:29 -07:00
Sönke Hahn
c2c9bef571 version bump 2016-04-07 18:24:29 +08:00
Sönke Hahn
933a2c4445 re-export ClientM from Servant.Client. 2016-04-05 17:51:25 +08:00
Sönke Hahn
14a8139cbe version bump 2016-04-04 16:22:11 +08:00
Sönke Hahn
2367ee9965 put 0.6 into changelogs 2016-04-04 16:22:11 +08:00
Alexander Kjeldaas
4f558971d1 Removed FromText references from docs. 2016-04-01 22:56:19 +02:00
mbg
6fd1e21580 Updated changelog to reflect that client no longer requires BaseUrl and Manager arguments 2016-03-30 22:51:08 +01:00
mbg
9e1ba9221d Manager and BaseUrl are now explicit parameters of all client functions, instead of ReaderTs 2016-03-30 22:41:39 +01:00
mbg
41129e98b3 Removed GetNth and GetLast type classes 2016-03-28 18:01:53 +01:00
mbg
316737c16d Updated documentation in Client.hs to reflect the changes to the client function 2016-03-28 14:56:50 +01:00
mbg
89b0758dc8 Changed servant-client tests to reflect the changes to the client function 2016-03-28 14:52:33 +01:00
mbg
7379b7486a Moved BaseUrl and Manager parameters from the client function to the Client type as discussed in #428 2016-03-28 14:51:07 +01:00
Julian K. Arni
101e138a4b Cut 0.5 in changelogs 2016-03-19 13:26:13 +01:00
aaron levin
b3af5a8d95 Move general authentication to Experimental module
Removes the UndecidableInstances extension in the module containing the
HasServer instances.
2016-03-09 22:30:34 +01:00
aaron levin
29f8e64e1c Add Experimental warnings on combinators 2016-03-09 22:30:34 +01:00
aaron levin
cd31b20cd8 Update CHANGELOG for generalized authentication support 2016-03-09 22:30:34 +01:00
aaron levin
23da4879ef Add general auth support to servant-client 2016-03-09 22:30:34 +01:00
aaron levin
546adc391a basic-auth: config -> context 2016-03-08 23:28:27 +01:00
aaron levin
1e703be15f replace serve with serveWithConfig 2016-03-08 23:13:05 +01:00