cell_direction = CELL_DIRECTION_OUT;
numsent_ap++;
log(LOG_DEBUG,"circuit_deliver_relay_cell_from_edge(): now sent %d relay cells from ap", numsent_ap);
-#if 0
- if(layer_hint->package_window <= 0) {
- log(LOG_DEBUG,"circuit_deliver_relay_cell_from_edge(): package_window 0, queueing for later.");
- circ->relay_queue = relay_queue_add(circ->relay_queue, cell, layer_hint);
- return 0;
- }
- layer_hint->package_window--;
-// log(LOG_INFO,"circuit_deliver_relay_cell_from_edge(): package_window now %d.",layer_hint->package_window);
-#endif
} else { /* i'm the exit */
cell_direction = CELL_DIRECTION_IN;
-// assert(layer_hint == NULL);
-// assert(circ->cpath == NULL);
numsent_exit++;
log(LOG_DEBUG,"circuit_deliver_relay_cell_from_edge(): now sent %d relay cells from exit", numsent_exit);
-#if 0
- if(circ->package_window <= 0) {
- log(LOG_DEBUG,"circuit_deliver_relay_cell_from_edge(): package_window 0, queueing for later.");
- circ->relay_queue = relay_queue_add(circ->relay_queue, cell, layer_hint);
- return 0;
- }
- circ->package_window--;
-#endif
}
if(circuit_deliver_relay_cell(cell, circ, cell_direction, layer_hint) < 0) {
return -1;
}
-// circuit_consider_stop_edge_reading(circ, edge_type, layer_hint); /* has window reached 0? */
return 0;
}
thishop = thishop->next;
} while(thishop != circ->cpath && thishop->state == CPATH_STATE_OPEN);
- log(LOG_INFO,"relay_crypt(): in-cell at OP not recognized. Killing circuit.");
+ log(LOG_INFO,"relay_crypt(): in-cell at OP not recognized. Dropping.");
return 0;
-// return -1;
} else { /* we're in the middle. Just one crypt. */
log(LOG_DEBUG,"relay_crypt(): before encrypt: %d",*(int*)(in+2));
assert(edge_type == EDGE_EXIT || edge_type == EDGE_AP);
log(LOG_DEBUG,"circuit_resume_edge_reading(): resuming");
-#if 0
- /* first, send the queue waiting at circ onto the circuit */
- relay = circ->relay_queue;
- while(relay) {
- assert(relay->cell);
- if(edge_type == EDGE_EXIT) {
- assert(relay->layer_hint == NULL);
- circ->package_window--;
- assert(circ->package_window >= 0);
-
- if(circuit_deliver_relay_cell(relay->cell, circ, CELL_DIRECTION_IN, relay->layer_hint) < 0) {
- circuit_close(circ);
- return;
- }
- } else { /* ap */
- assert(relay->layer_hint);
- if(relay->layer_hint != layer_hint) {
- relay=relay->next; /* this cell isn't destined for this layer. don't send it. */
- continue;
- }
- relay->layer_hint->package_window--;
- assert(relay->layer_hint->package_window >= 0);
-
- if(circuit_deliver_relay_cell(relay->cell, circ, CELL_DIRECTION_OUT, relay->layer_hint) < 0) {
- circuit_close(circ);
- return;
- }
- }
- victim = relay;
- relay=relay->next;
- if(circ->relay_queue == victim) {
- circ->relay_queue = relay;
- }
- free(victim->cell);
- free(victim);
-
- if(circuit_consider_stop_edge_reading(circ, edge_type, layer_hint))
- return;
- }
-#endif
if(edge_type == EDGE_EXIT)
conn = circ->n_conn;
return;
}
-#if 0
- if(cell->aci == circ->p_aci) { /* it's an outgoing cell */
- if(--circ->p_receive_circwindow < 0) { /* is it less than 0 after decrement? */
- log(LOG_INFO,"command_process_relay_cell(): Too many relay cells for out circuit (aci %d). Closing.", circ->p_aci);
- circuit_close(circ);
- return;
- }
- log(LOG_DEBUG,"command_process_relay_cell(): p_receive_circwindow for aci %d is %d.",circ->p_aci,circ->p_receive_circwindow);
- }
-
- if(cell->aci == circ->n_aci) { /* it's an ingoing cell */
- if(--circ->n_receive_circwindow < 0) { /* is it less than 0 after decrement? */
- log(LOG_INFO,"command_process_relay_cell(): Too many relay cells for in circuit (aci %d). Closing.", circ->n_aci);
- circuit_close(circ);
- return;
- }
- log(LOG_DEBUG,"command_process_relay_cell(): n_receive_circwindow for aci %d is %d.",circ->n_aci,circ->n_receive_circwindow);
- }
-#endif
-
-#if 0
- if(circ->state == CIRCUIT_STATE_ONION_WAIT) {
- log(LOG_WARNING,"command_process_relay_cell(): circuit in onion_wait. Dropping relay cell.");
- return;
- }
- if(circ->state == CIRCUIT_STATE_OR_WAIT) {
- log(LOG_WARNING,"command_process_relay_cell(): circuit in or_wait. Dropping relay cell.");
- return;
- }
-#endif
- /* circ->p_conn and n_conn are only null if we're at an edge point with no connections yet */
-
if(cell->aci == circ->p_aci) { /* it's an outgoing cell */
cell->aci = circ->n_aci; /* switch it */
if(circuit_deliver_relay_cell(cell, circ, CELL_DIRECTION_OUT, conn->cpath_layer) < 0) {