Ace: HTTP/2 webserver

erlang
web-frameworks
ace
#21

Access to underlying connection information added 0.16.1

For both HTTP/1 and HTTP/2 it is now possible to access connection information from a worker
Process.get(Ace.HTTP.Connection). This allows inspection and verification of peer certificate. For example allowing a pure Elixir implementation of GRPC.

0 Likes

#22

Access to raw path added in 0.16.3

Gives full control to the user over their applications routing. as well as making it easy to verify the signature of requests.

1 Like

#23

Better errors and child_specs added in 0.16.4 to help get started.

1. Callback errors

Raxx.ReturnError added to help debug callbacks. Now if a callback returns an invalid value the following error will be raise.

** (ReturnError) Invalid reaction from server module. Response must be complete or include update server state

    e.g.
      # Complete
      Raxx.response(:ok)
      |> Raxx.set_body("Hello, World!")

      # New server state
      response = Raxx.response(:ok)
      |> Raxx.set_body(true)
      {[response], new_state}

    Actual value returned was
      :ok

2. Server child_specs

If a module using Ace.HTTP.Service defines all the required server options it can be added to a supervision tree using a simpler child spec.

# lib/my_app/www.ex
defmodule MyApp.WWW do
  use Ace.HTTP.Service, [port: 8080, cleartext: true]
end

# lib/my_app/application.ex
children = [
  {MyApp.WWW, [%{config: foo}]}
  # or
  MyApp.WWW
]
3 Likes

#24

Count active connections to a service added in 0.16.6

Thanks to @arturcygan for this contribution.

2 Likes

#25

Bug when receiving multiple headers fixed in 0.16.7

0 Likes

#26

0.16.8 released

Added

  • Formatter check to travis.
  • Dialyzer check to travis.
  • HTTP/1 request backpressure.

Changed

  • Internal updates to use serialization and parsing from Raxx project

Fixed

  • Exit with status :normal in case where set_active call is made on closed socket.
2 Likes

#27

0.17.0 released

Updated to include the changes to the Raxx interface released in Raxx 0.16.0.
See this thread for release notes.

1 Like

#28

0.18.0 release to separate streaming from simple interface.

Ace HTTP service must now explicitly implement Raxx.SimpleServer or Raxx.Server.

e.g.

defmodule MyApp.WWW do
  use Ace.HTTP.Service, port: 8080, cleartext: true
  use Raxx.SimpleServer

  @impl Raxx.SimpleServer
  def handle_request(_,_) do
    response(:ok)
  end
end

This changes are to facilitate adding middleware to Raxx.

1 Like

#29

Erroneous warnings from use Raxx.SimpleServer fixed in 0.18.2

Small but helpful fix this one. Thanks ishikawa for providing the solution.

1 Like

#30

0.18.3 Fix HTTP/2 handling for application data sent as iolist

See CHANGELOG

1 Like

#31

0.18.5 released

This fixes parsing of te headers in HTTP/2 requests

1 Like