Parcourir la source

clean up some more.
i think i'm getting closer.


svn:r2931

Roger Dingledine il y a 20 ans
Parent
commit
27b8797245
2 fichiers modifiés avec 17 ajouts et 11 suppressions
  1. 2 2
      src/or/buffers.c
  2. 15 9
      src/or/relay.c

+ 2 - 2
src/or/buffers.c

@@ -159,9 +159,9 @@ void buf_free(buf_t *buf) {
 }
 
 /** Read from socket <b>s</b>, writing onto end of <b>buf</b>.  Read at most
- * <b>at_most</b> bytes, resizing the buffer as necessary.  If read()
+ * <b>at_most</b> bytes, resizing the buffer as necessary.  If recv()
  * returns 0, set <b>*reached_eof</b> to 1 and return 0. Return -1 on error;
- * else return the number of bytes read.  Return 0 if read() would
+ * else return the number of bytes read.  Return 0 if recv() would
  * block.
  */
 int read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof) {

+ 15 - 9
src/or/relay.c

@@ -1009,7 +1009,7 @@ circuit_resume_edge_reading_helper(connection_t *conn,
 /** Check if the package window for <b>circ</b> is empty (at
  * hop <b>layer_hint</b> if it's defined).
  *
- * If yes, tell edge streams to stop reading and return -1.
+ * If yes, tell edge streams to stop reading and return 1.
  * Else return 0.
  */
 static int
@@ -1017,13 +1017,19 @@ circuit_consider_stop_edge_reading(circuit_t *circ, crypt_path_t *layer_hint)
 {
   connection_t *conn = NULL;
 
-  log_fn(LOG_DEBUG,"considering");
-  if(!layer_hint && circ->package_window <= 0) {
-    log_fn(LOG_DEBUG,"yes, not-at-origin. stopped.");
-    for(conn = circ->n_streams; conn; conn=conn->next_stream)
-      connection_stop_reading(conn);
-    return -1;
-  } else if(layer_hint && layer_hint->package_window <= 0) {
+  if (!layer_hint) {
+    log_fn(LOG_DEBUG,"considering circ->package_window %d", circ->package_window);
+    if (circ->package_window <= 0) {
+      log_fn(LOG_DEBUG,"yes, not-at-origin. stopped.");
+      for(conn = circ->n_streams; conn; conn=conn->next_stream)
+        connection_stop_reading(conn);
+      return 1;
+    }
+    return 0;
+  }
+  /* else, layer hint is defined, use it */
+  log_fn(LOG_DEBUG,"considering layer_hint->package_window %d", layer_hint->package_window);
+  if (layer_hint->package_window <= 0) {
     log_fn(LOG_DEBUG,"yes, at-origin. stopped.");
     for(conn = circ->n_streams; conn; conn=conn->next_stream)
       if(conn->cpath_layer == layer_hint)
@@ -1031,7 +1037,7 @@ circuit_consider_stop_edge_reading(circuit_t *circ, crypt_path_t *layer_hint)
     for(conn = circ->p_streams; conn; conn=conn->next_stream)
       if(conn->cpath_layer == layer_hint)
         connection_stop_reading(conn);
-    return -1;
+    return 1;
   }
   return 0;
 }