tor/src
Ian Goldberg bd7721f66e Implement server side of Proposal 174 (optimistic data)
Ian's original message:
    The current code actually correctly handles queued data at the
    Exit; if there is queued data in a EXIT_CONN_STATE_CONNECTING
    stream, that data will be immediately sent when the connection
    succeeds. If the connection fails, the data will be correctly
    ignored and freed. The problem with the current server code is
    that the server currently drops DATA cells on streams in the
    EXIT_CONN_STATE_CONNECTING state. Also, if you try to queue data
    in the EXIT_CONN_STATE_RESOLVING state, bad things happen because
    streams in that state don't yet have conn->write_event set, and so
    some existing sanity checks (any stream with queued data is at
    least potentially writable) are no longer sound.

    The solution is to simply not drop received DATA cells while in
    the EXIT_CONN_STATE_CONNECTING state. Also do not send SENDME
    cells in this state, so that the OP cannot send more than one
    window's worth of data to be queued at the Exit. Finally, patch
    the sanity checks so that streams in the EXIT_CONN_STATE_RESOLVING
    state that have buffered data can pass.

    [...] Here is a simple patch. It seems to work with both regular
    streams and hidden services, but there may be other corner cases
    I'm not aware of. (Do streams used for directory fetches, hidden
    services, etc. take a different code path?)
2011-03-14 18:05:33 -04:00
..
common Merge remote branch 'origin/maint-0.2.2' 2011-03-07 17:12:08 -05:00
config Merge branch 'maint-0.2.1' into maint-0.2.2 2011-03-08 18:16:06 -05:00
or Implement server side of Proposal 174 (optimistic data) 2011-03-14 18:05:33 -04:00
test Merge remote branch 'origin/maint-0.2.2' 2011-01-24 17:51:52 -05:00
tools Bump copyright statements to 2011 (master) 2011-01-03 11:55:01 -05:00
win32 bump to 0.2.2.19-alpha 2010-11-21 18:00:12 -05:00
Makefile.am Move testing code into new src/test directory. 2009-09-23 00:24:43 -04:00