Commit Graph

63 Commits

Author SHA1 Message Date
Falco Peijnenburg
a08b116715 servant-client: Removed redundant import 2016-10-03 11:21:00 +02:00
Falco Peijnenburg
798d9e8967 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-09-30 18:12:22 +02:00
Falco Peijnenburg
2082abf17b Merge branch 'master' of github.com:haskell-servant/servant into client-ghcjs 2016-09-26 15:32:53 +02:00
Christian Klinger
7a7f7d7cf5 changed ClientM to be a Reader of ClientEnv 2016-09-08 00:17:13 +02: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
Sönke Hahn
187fe5b139 Merge tag 'v0.8' into client-ghcjs_7.1 2016-07-19 18:59:26 +02:00
Oleg Grenrus
197ed0548a Use parseRequest 2016-07-18 14:40:05 +02:00
Jonathan Lange
7fb9a95711 servant-client support for CaptureAll 2016-07-11 14:46:31 +01:00
Sönke Hahn
d45c7c5897 support http-client-0.5 2016-07-09 18:36:00 +02:00
Sönke Hahn
6c5afe8fb3 Merge remote-tracking branch 'origin/master' into client-ghcjs_update-stack-file 2016-07-09 15:53:58 +02: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
Sönke Hahn
5c91864ee4 servant-client: support for ghcjs 2016-05-13 15:41:07 +08:00
Sönke Hahn
29be5761ce servant-client: add Eq instance for ServantError 2016-04-21 15:27:08 +08:00
Sönke Hahn
933a2c4445 re-export ClientM from Servant.Client. 2016-04-05 17:51:25 +08:00
Alexander Kjeldaas
4f558971d1 Removed FromText references from docs. 2016-04-01 22:56:19 +02: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
316737c16d Updated documentation in Client.hs to reflect the changes to the client function 2016-03-28 14:56:50 +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
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
23da4879ef Add general auth support to servant-client 2016-03-09 22:30:34 +01:00
aaron levin
d989d15e4c Add basic-auth support to servant-client 2016-03-08 23:13:05 +01:00
Sönke Hahn
8ef4d4543b renaming: Config -> Context 2016-03-07 23:12:24 +08:00
Sönke Hahn
2176fecfda config: added instances for all interpretations 2016-01-21 17:55:02 +01:00
Sönke Hahn
b20b8d9770 add HasClient instance for HttpVersion 2016-01-18 12:28:29 +01:00
Julian K. Arni
f1b6603c52 Review fixes 2016-01-08 18:03:28 +01:00
Julian K. Arni
783a849c67 Make NoContent still take an arg.
For consistency with other combinators, and to make using headers
        easier.
2016-01-07 14:30:08 +01:00
Julian K. Arni
cda8bcf17c Simplify verb combinators.
Create a single 'Verb' combinator with parameters for status code and
        method. Make existing combinators type synonyms of 'Verb'.
2016-01-07 13:47:07 +01:00
Julian K. Arni
79d4f944a4 less OverlappingInstances noise 2016-01-04 13:09:11 -05:00
Julian K. Arni
afc76b8f6c Remove MatrixParam.
In servant, servant-server, and servant-client.
2015-10-13 21:37:07 +02:00
Julian K. Arni
c2a06bc090 More generous acceptable status codes for servant-client 2015-10-11 21:12:05 +02:00
Alp Mestanogullari
444a72eac6 Merge pull request #245 from arianvp/servant-client-hspec-discover-fix
Fix servant-client tests to properly use hspec-discover.
2015-10-10 02:40:24 +02:00
Nickolay Kudasov
40d2c68897 Use http-api-data package instead of ToText/FromText 2015-10-08 00:38:47 +03:00
Julian K. Arni
110196e23f Fix path concatenation, Eq instance, for BaseUrl 2015-10-07 21:07:07 +02:00
Julian K. Arni
de447dfe22 Pass in Manager as argument to 'client' 2015-09-28 16:34:53 +02:00
Index Int
f2f7b061d2 Drop EitherT in favor of ExceptT 2015-09-12 15:11:24 +03:00
Taylor Fausak
4238a58f92 Fix #203; add path to BaseUrl 2015-08-25 08:42:13 -05:00
Julian K. Arni
6eb7add53a stylish haskell changes
And import fix.
2015-08-18 00:07:12 +02:00
Julian K. Arni
98b6e85128 Contributing 2015-08-17 23:50:42 +02:00
Alp Mestanogullari
f39d57c6b3 add HttpVersion, IsSecure, RemoteHost and Vault combinators with instances for all interpretations (all but the server ones being 'ignore that combinator')
tighter version bounds for network

cleanup

document the new combinators

servant-server: add some tests for HttpVersion, IsSecure, RemoteHost and Vault

update changelogs

address Julian's feedback

remove vault test in servant-server

servant-server tests: -Werror friendly
2015-07-10 14:00:01 +02:00
Christian Marie
a4bf32c51a servant-client: Hide HttpException by wrapping it in SomeException 2015-06-12 21:19:26 +10:00
Christian Marie
ad16c4f768 Merge branch 'master' into existential-error 2015-06-12 19:56:49 +10:00
Pierre Radermecker
3bcbe80c37 Fix for GHC-7.8.x 2015-05-29 11:13:10 +02:00
Pierre Radermecker
520519bca9 Remove deps on HttpException from http-client 2015-05-27 15:36:28 +02:00
Pierre Radermecker
15b54cf1d0 Add AutoDeriveTypeable for ghc < 7.10 2015-05-27 15:36:28 +02:00
Pierre Radermecker
076286c37b Add a Exception instance for ServantError 2015-05-27 15:36:28 +02:00
Pierre Radermecker
717b18df4e Use MonadThrow instead of Either in the signature of parseBaseUrl 2015-05-27 15:36:28 +02:00
Timo von Holtz
ed7d235b26 Don't export HttpException 2015-05-25 17:51:35 +10:00
Brandon Martin
b45ac07ece HasClient instance for Delete cts' () now does not care at all about content types provided 2015-05-17 07:51:49 -06:00