Browse Source

clean up hacking file, based on patch from tyranix

svn:r4237
Roger Dingledine 20 years ago
parent
commit
c5b986ec6c
1 changed files with 77 additions and 11 deletions
  1. 77 11
      doc/HACKING

+ 77 - 11
doc/HACKING

@@ -34,16 +34,33 @@ the distant future, stuff may have changed.)
         because many people are running older versions of OpenSSL without
         because many people are running older versions of OpenSSL without
         AES support.)
         AES support.)
 
 
+     compat.[ch] -- Wrappers to make calls more portable.  This code defines
+        functions such as tor_malloc, tor_snprintf, get/set various data types,
+        renaming, setting socket options, switching user IDs.  It is basically
+        where the non-portable items are conditionally included depending on
+        the platform.
+
+     container.[ch] -- Implements a smart list which is a resizable array along
+        with helper functions to use on these lists.  Also includes a
+        splay-tree implementation of the string-to-void* map.
+
      crypto.[ch] -- Wrapper functions to present a consistent interface to
      crypto.[ch] -- Wrapper functions to present a consistent interface to
         public-key and symmetric cryptography operations from OpenSSL.
         public-key and symmetric cryptography operations from OpenSSL.
 
 
-     fakepoll.[ch] -- Used on systems that don't have a poll() system call;
-        reimplements() poll using the select() system call.
-
      log.[ch] -- Tor's logging subsystem.
      log.[ch] -- Tor's logging subsystem.
 
 
+     strlcat.c -- Safer, size-bounded string concatenation.  Use this instead
+        of strncat because it has a safer API.  Included for platforms that
+        that don't already ship this code.
+
+     strlcpy.c -- Safer, size-bounded string copying.  Use this instead of
+        strncpy because it is a safer API which guarantees to NUL terminate.
+        Included for platforms that don't already ship this code.
+
      test.h -- Macros used by unit tests.
      test.h -- Macros used by unit tests.
 
 
+     torgzip.[ch] -- A simple in-memory gzip implementation.
+
      torint.h -- Provides missing [u]int*_t types for environments that
      torint.h -- Provides missing [u]int*_t types for environments that
         don't have stdint.h.
         don't have stdint.h.
 
 
@@ -91,29 +108,70 @@ the distant future, stuff may have changed.)
      dirserv.c -- Code to manage directory contents and generate
      dirserv.c -- Code to manage directory contents and generate
         directories. [Directory server only]
         directories. [Directory server only]
 
 
-     routers.c -- Code to parse directories and router descriptors; and to
+     router.c -- Code to parse directories and router descriptors; and to
         generate a router descriptor corresponding to this OR's
         generate a router descriptor corresponding to this OR's
         capabilities.  Also presents some high-level interfaces for
         capabilities.  Also presents some high-level interfaces for
         managing an OR or OP's view of the directory.
         managing an OR or OP's view of the directory.
 
 
    [Circuit-related modules.]
    [Circuit-related modules.]
 
 
-     circuit.c -- Code to create circuits, manage circuits, and route
-        relay cells along circuits.
+     circuitbuild.c -- Creates circuits.
+
+     circuitlist.c -- Manage the global circuit list.
+
+     circuituse.c -- Launch the right type of circuits and attach streams
+        to them.
 
 
      onion.c -- Code to generate and respond to "onion skins".
      onion.c -- Code to generate and respond to "onion skins".
 
 
+     relay.c -- Handle relay cell encryption/decryption along with packaging
+        and receiving from circuits.
+
    [Core protocol implementation.]
    [Core protocol implementation.]
 
 
+     command.c -- Code to handle specific cell types.
+
      connection.c -- Code used in common by all connection types.  See
      connection.c -- Code used in common by all connection types.  See
         1.2. below for more general information about connections.
         1.2. below for more general information about connections.
 
 
      connection_edge.c -- Code used only by edge connections.
      connection_edge.c -- Code used only by edge connections.
 
 
-     command.c -- Code to handle specific cell types.
-
      connection_or.c -- Code to implement cell-speaking connections.
      connection_or.c -- Code to implement cell-speaking connections.
 
 
+   [Hidden services]
+
+     rendclient.c -- Client code to access location-hidden services.  This
+        allows clients and servers to run services and have people connect
+        without either end knowing who they are connecting to.
+
+     rendcommon.c -- Rendevzous implementation: Shared code between
+        introducers, services, clients, and rendezvous points.
+
+     rendmid.c -- Implement introduction and rendezvous points.
+
+     rendservice.c -- Hidden-service side of rendezvous functionality.
+
+   [Reputation]
+
+     rephist.c -- Basic history functionality for reputation module.
+
+   [Router lists]
+
+     routerlist.c -- Code to maintain and access global list of routerinfos for
+        known servers.
+
+     routerparse.c -- Code to parse and validate router descriptors and
+        directories.
+
+   [Bandwidth and GUI]
+
+     control.c -- Implementation of Tor's control socket interface.  Useful
+        for designing GUIs to interact with Tor.
+
+     hibernate.c -- Functions to close listeners, stop allowing new circuits,
+        and so on in preparation of closing down or going dormant.  Also used
+        to track bandwidth and time intervals to know when to hibernate.
+
    [Toplevel modules.]
    [Toplevel modules.]
 
 
      main.c -- Toplevel module.  Initializes keys, handles signals,
      main.c -- Toplevel module.  Initializes keys, handles signals,
@@ -128,6 +186,7 @@ the distant future, stuff may have changed.)
      test.c -- Contains unit tests for many pieces of the lower level Tor
      test.c -- Contains unit tests for many pieces of the lower level Tor
         modules.
         modules.
 
 
+
 1.2. All about connections
 1.2. All about connections
 
 
   All sockets in Tor are handled as different types of nonblocking
   All sockets in Tor are handled as different types of nonblocking
@@ -358,8 +417,8 @@ the distant future, stuff may have changed.)
 
 
 2.1. Details
 2.1. Details
 
 
-  Use tor_malloc, tor_strdup, and tor_gettimeofday instead of their
-  generic equivalents.  (They always succeed or exit.)
+  Use tor_malloc, tor_free, tor_snprintf, tor_strdup, and tor_gettimeofday
+  instead of their generic equivalents.  (They always succeed or exit.)
 
 
   Use INLINE instead of 'inline', so that we work properly on windows.
   Use INLINE instead of 'inline', so that we work properly on windows.
 
 
@@ -456,7 +515,14 @@ the distant future, stuff may have changed.)
          int b; /**< Or use the less-than symbol to put the comment after the element. */
          int b; /**< Or use the less-than symbol to put the comment after the element. */
        };
        };
 
 
-  5. See the Doxygen manual for more information; this summary just scratches
+  5. To generate documentation from the Tor source code, type:
+
+     $ doxygen -g
+
+     To generate a file called 'Doxyfile'.  Edit that file and run 'doxygen' to
+     generate the aPI documentation.
+
+  6. See the Doxygen manual for more information; this summary just scratches
      the surface.
      the surface.
 
 
 3. References
 3. References