Skip to content
  • Andrea Shepard's avatar
    Add channel.c/channel.h for bug 6465 · 83874365
    Andrea Shepard authored and Andrea Shepard's avatar Andrea Shepard committed
    Note: this is a squashed commit; see branch bug6465_rebased_v2 of user/andrea/tor.git for full history of the following 90 commits:
    
    Add channel.c/channel.h for bug 6465
    Fix make check-spaces in new channel.c/channel.h
    Make sure new channel.h is in nodist_HEADERS and Makefile.nmake is up to date too
    Add channel_state_t and state utility functions
    Add channel_change_state()
    Better comments in channel.h
    Add CHANNEL_STATE_LISTENING for channel_t
    Fix wide line in channel.c
    Add structures/prototypes for incoming cell handling
    Implement channel_queue_cell() and channel_queue_var_cell()
    Implement channel_process_cells()
    Fix asserts in channel_queue_cell() and channel_queue_var_cell()
    Add descriptive comments for channel_queue_cell() and channel_queue_var_cell()
    Implement channel cell handler getters/setters
    Queue outgoing writes when not in writeable state
    Drain queues and test assertions when changing channel_t state
    Add log_debug() messages for channel_t stuff
    Add log_debug() messages for channel_t stuff
    Add some channel_t metadata
    Add time_t client_used to channel_t
    Add channel_touched_by_client()
    Declare a few channel_t metadata queries we'll have to implement later for use by circuitbuild.c
    Add next_circ_id/circ_id_type to channel_t for use by circuitbuild.c
    Count n_circuits in channel_t
    Channel timestamp calls
    Add create timestamp for channel.h
    Declare some new metadata queries on channel_t
    Add get_real_remote_descr() prototype
    Move active_circuits stuff to channel_t, some other or.h and channel.h changes
    Make channel_t refcounted and use global lists of active channels
    Update channel_request_close() and channel_change_state() for channel_t registration mechanism
    Handle closing channels sensibly
    Add global_identifier for channels, channel_init() internal use function
    Add timestamp_last_added_nonpadding to channel_t
    Better comments in channel_init()
    Correctly handle next_circ_id in channel_init()
    Correctly handle next_circ_id in channel_init() and even compile this time
    Appease make check-spaces
    Update timestamps when writing cells to channel_t
    Add channel_flush_some_cells() to call channel_flush_from_first_active_circuit()
    Add registered channel lookup functions
    Get rid of client_used in or_connection_t; it's in channel_t now
    Get rid of circ_id_type in or_connection_t; implement channel_set_circ_id_type()
    Eliminate is_bad_for_new_circs in or_connection_t; implement getter/setter for it in channel_t
    Eliminate next_circ_id in or_connection_t in favor of channel_t
    Handle packed cells in channel_t for relay.c
    Add channel_identity_map and related functions
    Handle add/remove from channel identity map on state transitions
    Implement channel_is_local() and channel_mark_local()
    Implement channel_is_client() and channel_mark_client()
    Implement channel_is_outgoing() and channel_mark_outgoing()
    Eliminate declaration for redundant channel_nonopen_was_started_here()
    Add channel timestamps
    Add channel timestamps, fix some make-check-spaces complaints
    Remove redundant channel_was_started_here() function and initiated_remotely bit
    Rename channel_get_remote_descr()/channel_get_real_remote_descr() to something clearer in channel.h
    Replace channel_get_write_queue_len() with sufficient and easier to implement channel_has_queued_writes() in channel.h
    Change return type of channel_is_bad_for_new_circs() to int for consistency
    Implement channel_has_queued_writes()
    Rename channel_touched_by_client() and client_used field for consistency with other timestamps in channel.{c,h}
    Implement channel_get_actual_remote_descr() and channel_get_canonical_remote_descr() in channel.{c,h}
    Implement channel_matches_extend_info() in channel.{c,h}
    Implement channel_get_for_extend() and channel_is_better() in channel.{c,h}
    Make channel_is_better() public in channel.{c,h}
    Implement channel_matches_target_addr_for_extend() in channel.{c,h}
    Implement channel_is_canonical_is_reliable() in channel.{c,h}
    Demoronize get_remote_descr() method prototype - what the hell was I thinking there?
    Timestamp channels in the right places in channel.c
    Add missing tor_assert() in channel.c
    Check if the lower layer accepted a cell in channel_write_cell() et al. of channel.c
    Implement channel_flush_cells() in channel.c (w00t, it builds at last)
    Call channel_timestamp_drained() at the right places in channel.c
    Implement channel_run_cleanup()
    Support optional channel_get_remote_addr() method and use it for GeoIP in channel_do_open_actions()
    Get rid of channel refcounting; it'll be too complicated to handle it properly with all the pointers from circuits to channels, and closing from channel_run_cleanup() will work okay just like with connections
    Doxygenate channel.c
    Appease make check-spaces in channel.c
    Fix superfluous semicolons in channel.c
    Add/remove channels from identity digest map in all the right places in channel.c
    The cell queues on channel_t must be empty when going to a CLOSED or ERROR state
    Appease make check-spaces in channel.c
    Add channel_clear/set_identity_digest() and some better logging to channel.{c,h}
    Fix better logging to channel.c
    Avoid SIGSEGV testing for queue emptiness in channel_flush_some_cells_from_outgoing_queue()
    Remove TODO about checking cell queue in channel_free(); no need for it
    Appease make check-spaces in channel.c
    Add channel_free_all() and support functions
    Check nullness of active_circuit_pqueue in channel_free()
    Fix SMARTLIST_FOREACH_END usage in channel_process_cells()
    Rearrange channel_t struct to use a union distinguishing listener from cell-bearing channels in channel.{c,h}
    83874365