twisted / twisted/twisted

provide a clean access mechanism to access and switch protocols from an ITransport provider

Open
#3,204 11 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

core enhancement new priority-normal
Dominant language
Python
Stars
6k
Forks
1.2k
Avg merge
2d 10h
Merged PRs (30d)
10

Description

glyph's avatar @glyph reported
Trac ID trac#3204
Type enhancement
Created 2008-04-24 04:46:00Z
Branch https://github.com/twisted/twisted/tree/switch-protocols-3204

Some protocols - such as any protocol with a "STARTTLS" command - allow you to switch to a different application-level protocol in the middle of a connection.

Currently, Twisted contains two kinds of hacks to make this happen. One, as in TLS support, gets into the guts of the reactor implementation to allow you to switch protocols. Another, as in AMP's protocol switch command, adds an additional layer of (inefficient, overcomplex) wrapping in order to connect a different protocol to the available transport.

Currently, tcp.Connection happens to have a protocol attribute, but this is a mostly undocumented accident; it would be good to have an explicit API to switch protocols associated with ITransport.

I don't have a specific use-case at the moment for accessing the protocol attribute, but it seems like it would be nice to provide access along with mutation.

Searchable metadata
trac-id__3204 3204
type__enhancement enhancement
reporter__glyph glyph
priority__normal normal
milestone__ 
branch__branches_switch_protocols_3204 branches/switch-protocols-3204
branch_author__itamar itamar
status__new new
resolution__None None
component__core core
keywords__ 
time__1209012360000000 1209012360000000
changetime__1409665900096027 1409665900096027
version__None None
owner__itamar itamar
cc__davidsarah cc__adiroiban cc__daniele_athome

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the ITransport API and the tcp.Connection protocol attribute, then review the existing TLS and AMP protocol-switching approaches mentioned in the issue. Define an explicit transport API for accessing and switching the associated protocol, with behavior that replaces reliance on the undocumented attribute and avoids the existing wrapping workaround.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.