aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2017-10-21Fix sending of final chunk in HTTP/1.1Loïc Hoguin
I broke this when fixing stream handlers earlier.
2017-10-21Add a test for early_error metricsLoïc Hoguin
2017-10-21Add a metrics test when the handler didn't send anythingLoïc Hoguin
Also fix a test group to use h2 instead of HTTP/1.1.
2017-10-21Fix stream handler state being discarded on terminateLoïc Hoguin
When we have to send a response before terminating a stream, we call info. The state returned by this info call was discarded when we called terminate after that. This commit fixes it. There are no tests for this, however the new metrics test in the next commit requires the correct behavior so this is ultimately covered.
2017-10-20Add a test for metrics with a request bodyLoïc Hoguin
2017-10-20Add experimental metrics stream handlerLoïc Hoguin
It collects metrics and passes them to a configurable callback once the stream terminates. It will be documented in a future release. More tests incoming.
2017-10-20Fix HTTP/1.1 stopping streams too earlyLoïc Hoguin
It is possible in some cases to move on to the next request without waiting, but that can be done as an optimization later on if necessary.
2017-10-20Make the getting started use 2.0.0Loïc Hoguin
2017-10-13Add OTP-20.1.2 to CILoïc Hoguin
2017-10-13Small guide fixesLoïc Hoguin
2017-10-03Make a few link use https2.0.0Loïc Hoguin
2017-10-03Update version, CI and Cowlib dependency versionLoïc Hoguin
Hello 2.0.0!
2017-10-03Make sure a path parsing error in the router gives a 400Loïc Hoguin
2017-10-02Document cow_ws:frame in Cowboy for nowLoïc Hoguin
2017-10-02Fix cowboy:set_env when the env value is missingLoïc Hoguin
2017-10-02Fix infinite loop on incomplete multipart bodyJeffrey Griffin
I have amended a lot of changes from the original commit to make it behave as expected, including returning a 400 error. LH
2017-10-02Fix the documentation for the command flowLoïc Hoguin
2017-09-27Clarify a multipart exampleLoïc Hoguin
2017-09-27Cowboy 2.0.0-rc.42.0.0-rc.4Loïc Hoguin
2017-09-27Fix error response when constraint validation failsLoïc Hoguin
2017-09-27Add OTP-20.1 to CILoïc Hoguin
2017-09-27Ensure the behavior on stream handler crash is consistentLoïc Hoguin
Also corrects the lack of error response when HTTP/1.1 is used.
2017-09-25Cleanup various commentsLoïc Hoguin
2017-09-25Avoid some crashes when HTTP/2 streams flush their responseLoïc Hoguin
2017-09-25Move body length count to cowboy_stream_h instead of protocolsLoïc Hoguin
The documentation was correct, the code was not. This should make it easier to implement new protocols. Note that for HTTP/2 we will need to add some form of counting later on to check for malformed requests, but we can do simpler and just reduce from the expected length and then check if that's 0 when IsFin=fin.
2017-09-21Centralize stream handler error reporting in cowboy_streamLoïc Hoguin
2017-09-15Cowboy 2.0.0-rc.32.0.0-rc.3Loïc Hoguin
2017-09-15Add OTP 20.0.5 to CILoïc Hoguin
2017-09-15Add two new RFCs, remove one obsoleteLoïc Hoguin
2017-09-14Fix propagating the stacktrace on errors for OTP 19Loïc Hoguin
2017-09-14Rework the proc_lib_hackLoïc Hoguin
It is completely removed for connection processes, because assuming Cowboy is written properly this should bring us nothing anymore in 2.0. It is reworked for request processes, there we want to always propagate the stacktrace (including for exits) because we will print a report to help with debugging and proc_lib doesn't propagate it for exits. At the same time the initial callback for connection and request processes has been changed to connection_process and request_process, which should help with identifying processes when inspecting.
2017-09-14Improve how we detect request errorsLoïc Hoguin
When the request process exits with a {request_error, Reason, Human} exit reason, Cowboy will return a 400 status code instead of 500. Cowboy may also return a more specific status code depending on the error. Currently it may also return 408 or 413. This should prove to be more solid that looking inside the stack trace.
2017-09-05Update naming in REST flowchartsLoïc Hoguin
2017-09-05Add tests for direct Req accessLoïc Hoguin
2017-09-05Remove transfer-encoding parsing from cowboy_reqLoïc Hoguin
The header never reaches this point.
2017-09-05Remove an unused variableLoïc Hoguin
2017-09-04Accept sendfile tuple with 0 length in cowboy_reqLoïc Hoguin
This will result in no data being sent. It's simply easier to do this than to have to handle 0 size cases in user code.
2017-09-04Add a static handler test with an empty fileLoïc Hoguin
2017-09-04Alphabetical order some testsLoïc Hoguin
2017-09-04Fix more documentation todosLoïc Hoguin
I have decided not to include a manual page for cowboy_stream_h at this point because it clashes with the cowboy_stream manual page. This decision will be revisited in the future.
2017-08-29Add OTP 20.0.4 to CILoïc Hoguin
2017-08-23Cowboy 2.0.0-rc.22.0.0-rc.2Loïc Hoguin
2017-08-21Tentative fix for out of order queued dataLoïc Hoguin
2017-08-21Properly clean up timers when terminatingLoïc Hoguin
2017-08-14Add tests for the streams shutdown mechanismLoïc Hoguin
2017-08-09Remove broken links from examples READMELoïc Hoguin
2017-08-08Add missing cowboy_children moduleLoïc Hoguin
My bad! Still new at this.
2017-08-08Add OTP-20.0.2 to CILoïc Hoguin
2017-08-08Implement the shutdown timeout for request processesLoïc Hoguin
This should work very similar to normal supervisors, in particular during the shutdown sequence when the connection process goes down or switches to Websocket. Processes that need to enforce the shutdown timeout will be required to trap exits, just like in a supervisor. In a vanilla Cowboy, this only matters at connection shutdown, as Cowboy will otherwise wait for the request process to be down before stopping the stream. Tests are currently missing.
2017-07-26Fix HTTP/2 server pushLoïc Hoguin
Cowboy was encoding the headers then decoding them when initializing the request. The problem is that the encoding and decoding contexts are not the same. Now, Cowboy will directly use the headers it received in the push command for the new request. This is also more efficient. I am surprised it worked at all considering the issue.