[tor-commits] [stegotorus/master] Remove wrapper functions for steg-to-conn hint methods.

zwol at torproject.org zwol at torproject.org
Fri Jul 20 23:17:07 UTC 2012


commit e7f71a5aa2084c9678c2cbfd83486491e16ca85c
Author: Zack Weinberg <zackw at panix.com>
Date:   Tue Feb 28 09:50:36 2012 -0800

    Remove wrapper functions for steg-to-conn hint methods.
    
    Also removes the distinction between cease_transmission() and
    close_after_transmit(), which turned out to be unnecessary.
---
 src/connections.cc    |   26 --------------------------
 src/connections.h     |   33 ++++++---------------------------
 src/protocol.h        |    3 ---
 src/protocol/chop.cc  |    7 -------
 src/steg/embed.cc     |   16 ++++++++--------
 src/steg/http.cc      |    6 +++---
 src/steg/jsSteg.cc    |    5 ++---
 src/steg/nosteg_rr.cc |   10 +++-------
 src/steg/pdfSteg.cc   |    4 ++--
 src/steg/swfSteg.cc   |    6 ++----
 10 files changed, 26 insertions(+), 90 deletions(-)

diff --git a/src/connections.cc b/src/connections.cc
index f116231..39191b2 100644
--- a/src/connections.cc
+++ b/src/connections.cc
@@ -146,32 +146,6 @@ conn_send_eof(conn_t *dest)
   } /* otherwise, it's already been done */
 }
 
-/* Protocol methods of connections. */
-
-void
-conn_expect_close(conn_t *conn)
-{
-  conn->expect_close();
-}
-
-void
-conn_cease_transmission(conn_t *conn)
-{
-  conn->cease_transmission();
-}
-
-void
-conn_close_after_transmit(conn_t *conn)
-{
-  conn->close_after_transmit();
-}
-
-void
-conn_transmit_soon(conn_t *conn, unsigned long timeout)
-{
-  conn->transmit_soon(timeout);
-}
-
 /* Circuits. */
 
 /* The flush timer is used to ensure forward progress for protocols
diff --git a/src/connections.h b/src/connections.h
index 2b6388b..9b51ce5 100644
--- a/src/connections.h
+++ b/src/connections.h
@@ -60,8 +60,9 @@ struct conn_t {
       depending on the protocol.  */
   virtual int recv_eof() = 0;
 
-  /* The next four methods are for the use of steganography modules.
-     If you don't use steganography modules, you can use protocol.h's
+  /* The next several conn_t methods are used by steganography modules
+     to provide hints about appropriate higher-level behavior.
+     If your protocol doesn't use steganography modules, use protocol.h's
      PROTO_STEG_STUBS to define stubs that crash if called.  */
 
   /** It is an error if any further data is received from the remote
@@ -72,10 +73,6 @@ struct conn_t {
       on this connection.  However, the peer may still send data back. */
   virtual void cease_transmission() = 0;
 
-  /** After all pending data is transmitted, close this connection.
-      (This is stronger than cease_transmission - no reply is expected.) */
-  virtual void close_after_transmit() = 0;
-
   /** If TIMEOUT milliseconds elapse without anything having been
       transmitted on this connection, you need to make up some data
       and send it.  */
@@ -84,9 +81,9 @@ struct conn_t {
 
 /** When all currently-open connections and circuits are closed, stop
     the main event loop and exit the program.  If 'barbaric' is true,
-    forcibly close them all now, then stop the event loop.  It
-    is a bug to call any function that creates connections or circuits
-    after conn_start_shutdown has been called. */
+    forcibly close them all now, then stop the event loop.
+    It is a bug to call any function that creates connections or
+    circuits after conn_start_shutdown has been called. */
 void conn_start_shutdown(int barbaric);
 
 /** Create a new inbound connection from a configuration and a
@@ -100,24 +97,6 @@ size_t conn_count(void);
 void conn_send_eof(conn_t *conn);
 void conn_do_flush(conn_t *conn);
 
-/* The next several conn_t methods are used by steganography modules to
-   provide hints about appropriate higher-level behavior.  */
-
-/** The peer is expected to close CONN without any further
-    transmissions. */
-void conn_expect_close(conn_t *conn);
-
-/** Do not transmit any more data on this connection after the outbound
-    queue has drained.  However, the peer may still send data back. */
-void conn_cease_transmission(conn_t *conn);
-
-/** Close CONN after all pending data is transmitted. */
-void conn_close_after_transmit(conn_t *conn);
-
-/** We must transmit something on this connection within TIMEOUT
-    milliseconds. */
-void conn_transmit_soon(conn_t *conn, unsigned long timeout);
-
 /**
    This struct holds all the state for an "upstream" connection to the
    higher-level client or server that we are proxying traffic for. It
diff --git a/src/protocol.h b/src/protocol.h
index a0aca6a..4f0d6cd 100644
--- a/src/protocol.h
+++ b/src/protocol.h
@@ -123,7 +123,6 @@ extern const proto_module *const supported_protos[];
   virtual int  recv_eof();                              \
   virtual void expect_close();                          \
   virtual void cease_transmission();                    \
-  virtual void close_after_transmit();                  \
   virtual void transmit_soon(unsigned long timeout)     \
   /* deliberate absence of semicolon */
 
@@ -132,8 +131,6 @@ extern const proto_module *const supported_protos[];
   { log_abort(this, "steg stub called"); }              \
   void mod##_conn_t::cease_transmission()               \
   { log_abort(this, "steg stub called"); }              \
-  void mod##_conn_t::close_after_transmit()             \
-  { log_abort(this, "steg stub called"); }              \
   void mod##_conn_t::transmit_soon(unsigned long)       \
   { log_abort(this, "steg stub called"); }
 
diff --git a/src/protocol/chop.cc b/src/protocol/chop.cc
index d7607c4..82badde 100644
--- a/src/protocol/chop.cc
+++ b/src/protocol/chop.cc
@@ -1366,13 +1366,6 @@ chop_conn_t::cease_transmission()
 }
 
 void
-chop_conn_t::close_after_transmit()
-{
-  this->no_more_transmissions = true;
-  conn_do_flush(this);
-}
-
-void
 chop_conn_t::transmit_soon(unsigned long milliseconds)
 {
   struct timeval tv;
diff --git a/src/steg/embed.cc b/src/steg/embed.cc
index 1f14716..e2f12a0 100644
--- a/src/steg/embed.cc
+++ b/src/steg/embed.cc
@@ -166,10 +166,10 @@ int embed::transmit(struct evbuffer *source, conn_t *conn) {
   // check if this trace is finished and whether we need to send again
   if (advance_packet()) {
     log_debug("send finished trace");
-    conn_close_after_transmit(conn);
+    conn->cease_transmission();
   } else if (is_outgoing()) {
     log_debug("sending again in %d ms", get_pkt_time());
-    conn_transmit_soon(conn, get_pkt_time());
+    conn->transmit_soon(get_pkt_time());
   }
 
   // update last time
@@ -210,23 +210,23 @@ int embed::receive(conn_t *conn, struct evbuffer *dest) {
       }
     }
     pkt_size += data_len + 2;
-    
+
     // read padding
     if (exp_pkt_size > pkt_size) {
       size_t padding = exp_pkt_size - pkt_size;
       if (evbuffer_drain(source, padding) == -1) return -1;
     }
-    
+
     src_len -= exp_pkt_size;
     pkt_size = 0;
 
     log_debug("received packet %d of trace %d",
 	      cur_pkt, cur_idx);
-    
+
     // advance packet; if done with trace, sender should close connection
     if (advance_packet()) {
-      conn_cease_transmission(conn);
-      conn_expect_close(conn);
+      conn->cease_transmission();
+      conn->expect_close();
       log_debug("received last packet in trace");
       return 0;
     }
@@ -234,7 +234,7 @@ int embed::receive(conn_t *conn, struct evbuffer *dest) {
 
   if (is_outgoing()) {
     log_debug("preparing to send in %d ms", get_pkt_time());
-    conn_transmit_soon(conn, get_pkt_time());
+    conn->transmit_soon(get_pkt_time());
   }
 
   log_debug("remaining source length: %d", src_len);
diff --git a/src/steg/http.cc b/src/steg/http.cc
index aa57b63..302571d 100644
--- a/src/steg/http.cc
+++ b/src/steg/http.cc
@@ -369,7 +369,7 @@ http_client_cookie_transmit (http *s, struct evbuffer *source, conn_t *conn) {
 
   evbuffer_drain(source, sbuflen);
   log_debug("CLIENT TRANSMITTED payload %d\n", (int) sbuflen);
-  conn_cease_transmission(conn);
+  conn->cease_transmission();
 
   s->type = find_uri_type(buf, bufsize);
   s->have_transmitted = true;
@@ -530,7 +530,7 @@ http_client_uri_transmit (http *s, struct evbuffer *source, conn_t *conn) {
 
 
   evbuffer_drain(source, slen);
-  conn_cease_transmission(conn);
+  conn->cease_transmission();
   s->type = find_uri_type(outbuf, sizeof(outbuf));
   s->have_transmitted = 1;
   return 0;
@@ -694,7 +694,7 @@ http_server_receive(http *s, conn_t *conn, struct evbuffer *dest, struct evbuffe
   s->have_received = 1;
   s->type = type;
 
-  conn_transmit_soon(conn, 100);
+  conn->transmit_soon(100);
   return RECV_GOOD;
 }
 
diff --git a/src/steg/jsSteg.cc b/src/steg/jsSteg.cc
index 8bc56de..335b78e 100644
--- a/src/steg/jsSteg.cc
+++ b/src/steg/jsSteg.cc
@@ -874,7 +874,7 @@ http_server_JS_transmit (steg_t*, struct evbuffer *source, conn_t *conn, unsigne
   evbuffer_drain(source, sbuflen);
 
   free(outbuf2);
-  conn_close_after_transmit(conn);
+  conn->cease_transmission();
   //  downcast_steg(s)->have_transmitted = 1;
   return 0;
 }
@@ -1075,8 +1075,7 @@ http_handle_client_JS_receive(steg_t *, conn_t *conn, struct evbuffer *dest, str
   log_debug("Drained source for %d char\n", response_len);
    
   //  downcast_steg(s)->have_received = 1;
-  conn_expect_close(conn);
-  
+  conn->expect_close();
   return RECV_GOOD;
 }
 
diff --git a/src/steg/nosteg_rr.cc b/src/steg/nosteg_rr.cc
index 3aa543d..a586d0a 100644
--- a/src/steg/nosteg_rr.cc
+++ b/src/steg/nosteg_rr.cc
@@ -80,11 +80,7 @@ nosteg_rr::transmit(struct evbuffer *source, conn_t *conn)
   }
 
   can_transmit = false;
-  if (is_clientside) {
-    conn_cease_transmission(conn);
-  } else {
-    conn_close_after_transmit(conn);
-  }
+  conn->cease_transmission();
 
   return 0;
 }
@@ -104,10 +100,10 @@ nosteg_rr::receive(conn_t *conn, struct evbuffer *dest)
   }
 
   if (is_clientside) {
-    conn_expect_close(conn);
+    conn->expect_close();
   } else {
     can_transmit = true;
-    conn_transmit_soon(conn, 100);
+    conn->transmit_soon(100);
   }
 
   return 0;
diff --git a/src/steg/pdfSteg.cc b/src/steg/pdfSteg.cc
index 525e494..504c3d4 100644
--- a/src/steg/pdfSteg.cc
+++ b/src/steg/pdfSteg.cc
@@ -422,7 +422,7 @@ int http_server_PDF_transmit (steg_t*, struct evbuffer *source, conn_t *conn) {
 
   evbuffer_drain(source, sbuflen);
 
-  conn_close_after_transmit(conn);
+  conn->cease_transmission();
   //  downcast_steg(s)->have_transmitted = 1;
   return 0;
 }
@@ -502,7 +502,7 @@ http_handle_client_PDF_receive(steg_t *, conn_t *conn, struct evbuffer *dest, st
   }
 
   //  downcast_steg(s)->have_received = 1;
-  conn_expect_close(conn);
+  conn->expect_close();
   return RECV_GOOD;
 }
 
diff --git a/src/steg/swfSteg.cc b/src/steg/swfSteg.cc
index 2e118a4..d7c35ec 100644
--- a/src/steg/swfSteg.cc
+++ b/src/steg/swfSteg.cc
@@ -160,9 +160,7 @@ http_server_SWF_transmit (steg_t*, struct evbuffer *source, conn_t *conn) {
   }
 
     
-  // conn_cease_transmission(conn);
-  conn_close_after_transmit(conn);
-
+  conn->cease_transmission();
 
   free(inbuf);
   free(outbuf);
@@ -249,6 +247,6 @@ http_handle_client_SWF_receive(steg_t *, conn_t *conn, struct evbuffer *dest, st
   }
 
   //  downcast_steg(s)->have_received = 1;
-  conn_expect_close(conn);
+  conn->expect_close();
   return RECV_GOOD;
 }





More information about the tor-commits mailing list