Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support for s2n, plus an http/2 implementation. #78

Open
wants to merge 46 commits into
base: master
Choose a base branch
from
Open

Conversation

samrushing
Copy link
Member

Apologies for mingling h2 and s2n in the same branch, unfortunately I needed a way to test the new ALPN support (which is also added to openssl.pyx), and I thought a 'quick' upgrade of spdy to h2 would do the trick. [no, it was not quick].

The hpack implementation is from https://github.com/samrushing/hpack, the intent is to rewrite it in Cython once it has stabilized.

Note: alpn in s2n is broken for now, waiting on aws/s2n-tls#182, so if you need to specifically test s2n+h2, you'll need to apply that patch to it.

samrushing and others added 30 commits July 8, 2015 23:16
the semantics around non-blocking I/O are very confusing.
and clean up the s2n_Extension.
don't send "howdy", this allows testing between coro++, blocking-mode s2n, and shrapnel.
Written to be separate from the NPN support so that NPN can be easily removed.
[tested on server side, but not client side yet].
negotiate loop is in cys2n.
implement writev.
close, shutdown: handle closed sockets gracefully.
place constants into namespace classes.
read_frames: catch OSError.
send_thread: catch OSError.
send_goaway: new fun.
frame_priority: new.
frame_settings: do you even iterate, bro?
push_settings: allow override of initial settings via class var.
run: push_settings at connect time (safari insists).
remove more spdy-related cruft.
To show off shrapnel's source code tree.
ERROR,FRAME,SETTINGS,FLAGS: use namespaces for protocol constants.
LOG/DEBUG: commented-out debug stuff reformatted.
h2_file: simplified, removed some cruft.
h2_server_request:
  push headers opportunistically.
  set server and date headers.
h2_protocol: moved code from h2_connection here.
h2_connection: handle_headers.
h2_client_request:
  don't bother deriving from http_client.request.
  use two latches: http design can't work here because the
    entire connection is not devoted to sending reply content.
  add :authority header.
  frame_data: overridden to retire inflight sem.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant