>> The implementation of proposal 171 and subsequent release of tor
>> 0.2.3.25
>> fills my heart with joy. Yet, as far as I can tell, there is one use
>> case
>> that is not adequately covered. I would like to open and close Streams
>> (TransPort's, DNSPort's and SOCKSPort's) at run-time without interfering
>> with other, existing Streams and Circuits. SETCONF does not work here
>> because it resets all existing streams.
>
> I think tor lacks an isolation flag which specifies to isolate each and
> every stream, even those going to the same address and port.
I see, tor already implements such a flag, ISO_STREAM.
/** Isolate based on destination port */
#define ISO_DESTPORT (1u<<0)
/** Isolate based on destination address */
...
/** Isolate all streams (Internal only). */
#define ISO_STREAM (1u<<7)
diff --git a/src/or/config.c b/src/or/config.c
index 90a5dfb..648bfba 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -5929,6 +5929,8 @@ parse_port_config(smartlist_t *out,
isoflag = ISO_CLIENTPROTO;
} else if (!strcasecmp(elt, "IsolateClientAddr")) {
isoflag = ISO_CLIENTADDR;
+ } else if (!strcasecmp(elt, "IsolateStream")) {
+ isoflag = ISO_STREAM;
} else {
log_warn(LD_CONFIG, "Unrecognized %sPort option '%s'",
portname, escaped(elt_orig));
This looks like a reasonable addition to me - an addition that could be
backported to 0.2.3.x.