Log of /releases/wanproxy-0.5.1
Directory Listing
Revision
255 -
Directory Listing
Modified
Thu Aug 20 07:30:35 2009 UTC
(12 months, 2 weeks ago)
by
juli
Update with version number in startup banner.
Revision
254 -
Directory Listing
Modified
Thu Aug 20 07:16:48 2009 UTC
(12 months, 2 weeks ago)
by
juli
Remove development files from release and update logging mask.
Revision
253 -
Directory Listing
Modified
Thu Aug 20 07:15:53 2009 UTC
(12 months, 2 weeks ago)
by
juli
Copied from:
trunk revision 252
Branch 0.5.1.
Revision
252 -
Directory Listing
Modified
Thu Aug 20 07:11:33 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Test IP family "localhost" along with IPv4 and IPv6 localhosts.
Revision
251 -
Directory Listing
Modified
Thu Aug 20 07:10:11 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Fix GNU/Linux systems that don't know about an IPv6 host named "localhost" by
specifying "localhost" for IPv4 and "::1" for IPv6.
Revision
250 -
Directory Listing
Modified
Thu Aug 20 07:05:25 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Include <errno.h> for extern int errno on Slowlaris.
Revision
249 -
Directory Listing
Modified
Thu Aug 20 07:00:39 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Fall back to IPv4 when trying IPv6 for an IP socket fails due to a lack of
support. But why is it Protocol not supported and not EPFNOSUPPORT!?
Revision
248 -
Directory Listing
Modified
Thu Aug 20 06:43:35 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Push off on Pipes until 0.5.2, possibly.
Revision
247 -
Directory Listing
Modified
Thu Aug 20 06:40:43 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Add the SocketAddressFamilyIP type which auto-detects IPv4 or IPv6.
o) Pass the address as a hint to Socket::create where applicable.
o) Make socket_address::operator() use getaddrinfo(3) to find an appropriate
address in the desired family and to handle family inference when passed
AF_UNSPEC.
o) Remember the socket type and numeric protocol to facilitate getaddrinfo(3).
o) Reorder Socket::create to make it possible to determine which IP family to
use based on an address hint passed in.
o) While here make Socket::create's protocol argument default to empty.
o) Don't pass an empty protocol by hand to Socket::create for Unix domain
sockets anymore.
o) Make the WANProxy default configuration use the IP address family and the
"localhost" name so that it uses IPv4 or IPv6 as appropriate for that
system.
Revision
246 -
Directory Listing
Modified
Thu Aug 20 05:33:09 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Make encode_reference look more like encode_declaration.
Revision
245 -
Directory Listing
Modified
Thu Aug 20 00:37:32 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Use a more efficient segment-sized copyout() invocation that might just create
a reference rather than copying if we're lucky.
Revision
244 -
Directory Listing
Modified
Thu Aug 20 00:33:57 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Remove offset_seg_pair_t.
Revision
243 -
Directory Listing
Modified
Thu Aug 20 00:33:28 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Factor out encode_declaration() and encode_reference() from the main encode() body.
Revision
242 -
Directory Listing
Modified
Thu Aug 20 00:08:11 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Remove now-unused XCodecEncoder::Data class.
Revision
241 -
Directory Listing
Modified
Wed Aug 19 13:24:03 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Rewrite the XCodecEncoder encode function...
o) Do the entirety of processing in the first loop rather than processing
references and then declarations. This improves handling of in-stream
collisions and references to data earlier in a stream.
XXX This duplicates a lot of code. Add a TODO item to clean it up.
o) Correct an implementation bug: when we have a collision, we should still
check to see whether the last-known-good hash should be declared.
o) As a result of merging the loops add logic to handle adjacent hash collisions
(and hits) gracefully.
The net effect of this is that performance may be slightly degraded in terms of
encode throughput (merging the loops was at first a boost in throughput but
handling edge cases and better encoding possibilities ate the increase) the
compression ratio for non-random, non-uniform data is significantly better than
previously, from 1% to 10% better in some tested data sets. Random data should
be the same and veryuniform data sees a significant performance boost from the
elimination of the second loop (both in terms of eliminating the number of loops
and in terms of registering declarations earlier) -- about twice the throughput
of the previous encoder.
Revision
240 -
Directory Listing
Modified
Wed Aug 19 11:41:24 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Correct and add.
Revision
239 -
Directory Listing
Modified
Tue Aug 18 06:25:20 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a couple of ideas.
Revision
238 -
Directory Listing
Modified
Tue Aug 18 06:18:44 2009 UTC
(12 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a file in which to keep notes about future ideas.
Revision
237 -
Directory Listing
Modified
Mon Aug 17 10:48:05 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Only build address class and address family type if the io module is being
compiled in.
Revision
236 -
Directory Listing
Modified
Sun Aug 16 08:58:36 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Don't pass a prefix to the XCodec log handle.
Revision
235 -
Directory Listing
Modified
Sun Aug 16 07:09:08 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Thinking about XCodec now.
Revision
234 -
Directory Listing
Modified
Sat Aug 15 10:53:53 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Remove gratuitous vertical whitespace.
Revision
233 -
Directory Listing
Modified
Sat Aug 15 10:51:41 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Give a hint as to why a socket could not be created.
Revision
232 -
Directory Listing
Modified
Sat Aug 15 10:40:15 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add a UDPServer and a UDP client-server test.
Revision
231 -
Directory Listing
Modified
Sat Aug 15 10:30:56 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Note my unhappiness with doing an extra copy of read data.
Revision
230 -
Directory Listing
Modified
Sat Aug 15 10:26:35 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Add EOS suppport to Pipes.
o) Update TODO for EOS support being done and explain what I mean wrt flush.
Revision
229 -
Directory Listing
Modified
Sat Aug 15 10:07:21 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Add a cat-like (well, not really) program that passes its stdin to its stdout
via a PipeNull and which is useful for benchmarking the event system, IO,
Pipe, Buffer, etc. (about 10% of cat(1) right now), and which clearly
illustrates the need for a way to signal EOF to a Pipe and to get EOS back
from one.
Revision
228 -
Directory Listing
Modified
Sat Aug 15 09:09:43 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Think about PipeEndpoints.
Revision
227 -
Directory Listing
Modified
Sat Aug 15 08:42:16 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Fix a shadowing error in PipeNull.
o) Add a bidirectional Pipe interface: PipePair.
o) Add an echo PipePair and a test for it.
Revision
226 -
Directory Listing
Modified
Sat Aug 15 00:51:50 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add a Pipe mechanism which will be used for producer-consumer interfaces, if all
goes well. Also include a pass-through Pipe and a test that exercises it.
Revision
225 -
Directory Listing
Modified
Sat Aug 15 00:46:35 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Do not allow passing a Buffer pointer to an Event(). Prevents accidentally
passing the Buffer * via data_ instead of buffer_.
Revision
224 -
Directory Listing
Modified
Fri Aug 14 22:57:24 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Move up doing producer/consumer stuff.
Revision
223 -
Directory Listing
Modified
Thu Aug 13 07:25:12 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Update.
Revision
222 -
Directory Listing
Modified
Thu Aug 13 07:24:27 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Support using service names.
o) Give some informative errors if hosts/services are invalid.
Revision
221 -
Directory Listing
Modified
Thu Aug 13 07:14:35 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Note SOCKS IPv6 support.
Revision
220 -
Directory Listing
Modified
Thu Aug 13 07:14:22 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
IPv6 support seems to mostly be there.
Revision
219 -
Directory Listing
Modified
Thu Aug 13 07:13:54 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Unbreak validity-checking of IPv6.
Revision
218 -
Directory Listing
Modified
Thu Aug 13 07:12:35 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Support IPv4 and IPv6 get*name() in a sane-ish manner.
o) Support IPv6 address parsing on non-Slowlaris systems.
o) Test TCP over IPv6.
Revision
217 -
Directory Listing
Modified
Thu Aug 13 06:55:39 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Turn some HALTs into ERRORs.
Revision
216 -
Directory Listing
Modified
Thu Aug 13 06:53:40 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Plan for 0.5.1.
Revision
215 -
Directory Listing
Modified
Thu Aug 13 06:53:01 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Move Socket{AddressFamily,Type} enums to new <io/socket_types.h> for
consumers of the types but not the Socket API.
o) Make the configuration system use the SocketAddressFamily instead of its own
hand-rolled thing.
o) Make the Unix client/server API ask for the SocketType since that can vary,
but the SocketAddressFamily is implicit.
o) Make TCP* and UDP* API ask for the SocketAddressFamily. The rest is implied.
o) Modify a test so that it will be possible to sneak IPv6 into it RSN.
Revision
214 -
Directory Listing
Modified
Thu Aug 13 06:16:52 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Remove unused include.
Revision
213 -
Directory Listing
Modified
Thu Aug 13 06:16:23 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Add enumerators for socket domains and types rather than using the
Unix names everywhere.
o) Add a few stub IPv6 allusions.
Revision
212 -
Directory Listing
Modified
Thu Aug 13 01:38:40 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Put hostnames in brackets, just to be sure.
Revision
209 -
Directory Listing
Modified
Thu Aug 13 00:14:54 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Forcefully set the ConfigType pointer to NULL in case of failure sine GCC seems
to be confused about this in many versions. XXX Would be nice to conditionalize
but it seems to be a great many versions, indeed.
Revision
208 -
Directory Listing
Modified
Wed Aug 12 23:44:19 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Nuke some now-irrelevant TODO items.
Revision
207 -
Directory Listing
Modified
Wed Aug 12 23:36:26 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Add some helper methods to simplify configuration classes.
o) Make ConfigObject a class not a struct and hide its implementation details a
bit.
Revision
206 -
Directory Listing
Modified
Wed Aug 12 23:05:12 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Switch to single-string connect() and bind().
o) Make ports strings.
o) Use getsockname() to construct the listening address if bind() with
port of 0, rather than passing in a pointer to the port, simplifying
the API for non-0 code.
o) Add getsockname() pass-through to TCPServer.
Revision
205 -
Directory Listing
Modified
Wed Aug 12 21:41:21 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Update TODO a bit.
Revision
204 -
Directory Listing
Modified
Tue Aug 11 02:11:00 2009 UTC
(12 months, 3 weeks ago)
by
juli
Original Path:
trunk
Fix heavy-handed :%s///.
Revision
203 -
Directory Listing
Modified
Thu Aug 6 23:56:04 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Logic and consistency fixes for unix domain sockets.
Revision
202 -
Directory Listing
Modified
Thu Aug 6 23:54:28 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Actually compile and compile-fix.
Revision
201 -
Directory Listing
Modified
Thu Aug 6 23:53:46 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Add experimental AF_UNIX support; compile-tested.
Revision
200 -
Directory Listing
Modified
Thu Aug 6 23:47:23 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Add compile-tested Unix domain socket support. I'd like to make CLI<->WANProxy
use Unix domain sockets, and this also helps clarify how the Socket API and
implementation need to change to be more general.
Revision
199 -
Directory Listing
Modified
Thu Aug 6 22:40:17 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Check in expansion of ConfigClassAddress to allow for fields necessary for use
of Unix domain sockets.
Revision
198 -
Directory Listing
Modified
Thu Aug 6 22:39:12 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Call base class activation routine.
Revision
197 -
Directory Listing
Modified
Tue Aug 4 02:57:16 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Blow up nicely if the Buffer * passed to write() is empty, instead of blowing
up in Buffer::skip() later on.
Revision
196 -
Directory Listing
Modified
Sun Aug 2 20:49:28 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Make accept virtual.
Revision
195 -
Directory Listing
Modified
Sat Aug 1 09:00:38 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Only ever try to read 64K onto the stack at a time.
Revision
194 -
Directory Listing
Modified
Sat Aug 1 08:47:49 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Fix accidentally-aggressive s/Proxy/ProxySocks/g.
Revision
193 -
Directory Listing
Modified
Sat Aug 1 08:21:54 2009 UTC
(13 months ago)
by
juli
Original Path:
trunk
Make <algorithm> part of the common environment.
Revision
192 -
Directory Listing
Modified
Fri Jul 31 19:34:34 2009 UTC
(13 months, 1 week ago)
by
juli
Original Path:
trunk
Make close, read and write virtual.
Revision
191 -
Directory Listing
Modified
Thu Jul 30 10:03:03 2009 UTC
(13 months, 1 week ago)
by
juli
Original Path:
trunk
Record io's dependency on event and net's dependency on event and io.
XXX This approach is kind of ugly. Perhaps just REQUIREMENTS or DEPENDENCIES
or something and either make it hard to find out which library's requirement
is unmet, or make it slightly less ugly at best, like, DEPENDENCIES+=io:net
rather than IO_DEPENDENCIES+=net. Almost better to just hard-code it. But
not quite.
Revision
190 -
Directory Listing
Modified
Thu Jul 30 09:58:09 2009 UTC
(13 months, 1 week ago)
by
juli
Original Path:
trunk
Add a hastily-tried way to ensure that library dependencies are honored.
Revision
189 -
Directory Listing
Modified
Thu Jul 30 09:52:08 2009 UTC
(13 months, 1 week ago)
by
juli
Original Path:
trunk
Stop using FreeBSD-like PROG_CXX variable and call it PROGRAM instead.
Revision
188 -
Directory Listing
Modified
Thu Jul 30 05:40:46 2009 UTC
(13 months, 1 week ago)
by
juli
Original Path:
trunk
Disable -g on SunOS systems since at least my OpenSolaris setup can't link with it.
Revision
187 -
Directory Listing
Modified
Thu Jul 30 05:13:54 2009 UTC
(13 months, 1 week ago)
by
juli
Original Path:
trunk
Do not assume that <stdarg.h> will be leaked into the namespace.
Revision
186 -
Directory Listing
Modified
Tue Jun 30 17:33:29 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Attempt to prioritize by way of hypothetical releases.
Revision
185 -
Directory Listing
Modified
Tue Jun 30 04:59:28 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Update.
Revision
184 -
Directory Listing
Modified
Tue Jun 30 04:50:13 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Remove FlowTables and the FlowMonitor since the new configuration format doesn't
support either yet. They can come back when there's a reasonable integration
plan.
Revision
183 -
Directory Listing
Modified
Sun Jun 28 01:19:31 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Add config directory and mention os directory's non-use as yet.
Revision
182 -
Directory Listing
Modified
Sun Jun 28 00:54:19 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Add rather hackish proxy support for the new configuration system.
Revision
181 -
Directory Listing
Modified
Sun Jun 28 00:27:40 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Rather hackishly create SOCKS proxy listeners.
Revision
180 -
Directory Listing
Modified
Sat Jun 27 19:35:46 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Unify duplicated code from the various poll implementations into poll.h.
Revision
179 -
Directory Listing
Modified
Sat Jun 27 09:21:33 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Move program.mk into common/ to make tab-completion of programs/ less ugly and
to hide implementation details from the top-level file list.
Revision
178 -
Directory Listing
Modified
Fri Jun 26 06:19:10 2009 UTC
(14 months, 1 week ago)
by
juli
Original Path:
trunk
Small steps towards proxy activation.
Revision
177 -
Directory Listing
Modified
Tue Jun 16 03:09:11 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Temporarily disable a destructor assertion in Config since we're not to the
point of starting proxies, let alone shutting them down correctly.
o) Add skeleton proxy and proxy-socks ConfigClasses.
Revision
176 -
Directory Listing
Modified
Tue Jun 16 00:11:41 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
We implicitly make <string> a part of the standard environment for WANProxy by
needing it in <common/log.h>, so be explicit and put it in <common/common.h> since
it's basically indispensible like the logging and debugging stuff. This allows
me to clean up recent confusion I've introduced about this in the config code.
Revision
175 -
Directory Listing
Modified
Mon Jun 15 23:02:27 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Remove TODO. The remainder of the work is WANProxy-specific.
Revision
174 -
Directory Listing
Modified
Mon Jun 15 22:59:42 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Sketch codec configuration and uncomment relevant bits of wanproxy.conf.
Revision
173 -
Directory Listing
Modified
Mon Jun 15 17:54:18 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Support pointers to "None" as used in the wanproxy.conf.
Revision
172 -
Directory Listing
Modified
Mon Jun 15 17:53:08 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add a WANProxy peer ConfigClass.
Revision
171 -
Directory Listing
Modified
Mon Jun 15 17:47:28 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Add a network address ConfigClass.
o) Fix parsing of references to other configuration parameters.
o) Clean up some left-over ConfigClassString stuff in ConfigClassInt.
o) Add a stub WANProxy interface ConfigClass.
o) Comment out codec0 stuff since I want to take care of the rest of the
stuff in wanproxy.conf first.
Revision
170 -
Directory Listing
Modified
Mon Jun 15 08:41:33 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Saner speculation as to class names.
Revision
169 -
Directory Listing
Modified
Mon Jun 15 08:36:45 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Get the class name from the ConfigClass rather than requiring it be passed down.
Revision
168 -
Directory Listing
Modified
Mon Jun 15 04:46:42 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add an address family config type.
Revision
167 -
Directory Listing
Modified
Mon Jun 15 04:42:43 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Strike off a TODO item.
Revision
166 -
Directory Listing
Modified
Mon Jun 15 04:41:10 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add a ConfigType for referencing another ConfigObject.
Revision
165 -
Directory Listing
Modified
Mon Jun 15 01:59:56 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add untested reference resolution code.
Revision
164 -
Directory Listing
Modified
Sun Jun 14 22:06:14 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Stash the value string in the ConfigValue.
Revision
163 -
Directory Listing
Modified
Sun Jun 14 19:42:41 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Add a templated enum config type.
o) Make log-level an enum.
o) Make Log::mask take a Log::Priority rather than a string for the log level.
o) Make example configuration use the new enum log-level rather than a string.
Revision
162 -
Directory Listing
Modified
Sun Jun 14 19:05:08 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Wrongly mark destructors for ConfigClass and ConfigType virtual to please GCC.
Revision
161 -
Directory Listing
Modified
Fri Jun 12 07:00:20 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add a TODO just for config-related stuff.
Revision
160 -
Directory Listing
Modified
Fri Jun 12 06:38:27 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add an untested integer type.
Revision
159 -
Directory Listing
Modified
Thu Jun 11 21:34:49 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Add log-mask class.
o) Temporarily make the log mask itself a string rather than an enum since there
is not yet a type for enums.
Revision
158 -
Directory Listing
Modified
Thu Jun 11 21:33:59 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Stash the correct string.
Revision
157 -
Directory Listing
Modified
Thu Jun 11 21:27:54 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Try writing a test class and type.
Revision
156 -
Directory Listing
Modified
Thu Jun 11 20:52:53 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add an add_member method for adding members. Change visibility of everything.
Revision
155 -
Directory Listing
Modified
Thu Jun 11 20:52:19 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add commented-out import statements for each class that we need to support.
Revision
154 -
Directory Listing
Modified
Thu Jun 11 20:39:56 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Stash pointers back to the configuration in values and objects.
Revision
153 -
Directory Listing
Modified
Thu Jun 11 20:37:44 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Remove README now that the skeletal configuration stuff is in place.
Revision
152 -
Directory Listing
Modified
Thu Jun 11 20:33:19 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Flesh out more of the configuration system.
Revision
151 -
Directory Listing
Modified
Thu Jun 11 20:32:21 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Forward-declare Config before referencing it; print out the correct token in an
error.
Revision
150 -
Directory Listing
Modified
Thu Jun 11 08:29:49 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
I think it will be nice to copy values/scalars from other objects.
Revision
149 -
Directory Listing
Modified
Thu Jun 11 07:56:40 2009 UTC
(14 months, 3 weeks ago)
by
juli
Original Path:
trunk
Break configuration entirely:
Begin introducing the new configuration system. Right now it does nothing, but
this is a promise to fix it real soon now.
Update the WANProxy configurator to use it and update wanproxy.conf to, as well.
Revision
148 -
Directory Listing
Modified
Wed Jun 10 07:03:51 2009 UTC
(14 months, 4 weeks ago)
by
juli
Original Path:
trunk
I think definitions need to go OOB, too.
Revision
147 -
Directory Listing
Modified
Tue Jun 9 07:25:20 2009 UTC
(14 months, 4 weeks ago)
by
juli
Original Path:
trunk
Add a README describing what the new config system should look like...
Revision
146 -
Directory Listing
Modified
Sat Jun 6 08:33:00 2009 UTC
(15 months ago)
by
juli
Original Path:
trunk
Remove zig-zag codec, which didn't prove even remotely useful.
Revision
145 -
Directory Listing
Modified
Fri May 8 08:44:33 2009 UTC
(16 months ago)
by
juli
Original Path:
trunk
Remove obsolete File interface.
Revision
144 -
Directory Listing
Modified
Sat Apr 25 05:51:52 2009 UTC
(16 months, 1 week ago)
by
juli
Original Path:
trunk
Nuke some whitespace.
Revision
143 -
Directory Listing
Modified
Fri Apr 24 21:14:45 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Try to compute the zig-zag table in a more novel way. XXX It's pretty
non-optimal code, still, with too many edge cases.
Revision
142 -
Directory Listing
Modified
Fri Apr 24 03:53:47 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a comment about a minor epiphany I've had about how to do this.
Revision
141 -
Directory Listing
Modified
Thu Apr 23 19:20:41 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
When decoding ZZCodec data, fill up a BufferSegment at a time, rather than a
Buffer, since we can make the column size dependent on the BufferSegment length
and this is much quicker (due to avoiding the obvious indirection.)
Revision
140 -
Directory Listing
Modified
Thu Apr 23 19:15:55 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Reflect that XCodec is basically dependent on the BufferSegment length.
Revision
139 -
Directory Listing
Modified
Thu Apr 23 12:43:58 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Add ZZCodec, which zig-zag transforms blocks of data. This produces fewer
hits overall when used with XCodec, including greatly-reduced collisions,
which means it's probably better for repeated data, but worse for initial
compression. Need to investigate how it performs for small deltas.
o) Add zztack, which uses ZZCodec like tack uses XCodec.
Revision
138 -
Directory Listing
Modified
Wed Apr 22 07:15:25 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Add verbosity levels, at 1+, display hashes and single characters, at 2+,
display hexdumps of entire segments in hash declarations.
Revision
137 -
Directory Listing
Modified
Wed Apr 22 06:28:24 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a partly-formulated idea.
Revision
136 -
Directory Listing
Modified
Tue Apr 21 08:34:30 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add missing Makefile.
Revision
135 -
Directory Listing
Modified
Mon Apr 20 23:31:58 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add more comments.
Revision
134 -
Directory Listing
Modified
Mon Apr 20 20:55:26 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add the xcdump program, a WIP that will humanize an XCodec stream.
Revision
133 -
Directory Listing
Modified
Sat Apr 18 08:23:27 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Mention switching to getnameinfo(3).
Revision
130 -
Directory Listing
Modified
Sat Apr 18 04:50:48 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Undo some gratuitous double-quoting of things including a path, which was not
done consistently enough, and which BSD Make doesn't really support internally
well enough, that was originally done when working on Interix support, where it
turned out to be advantageous all around to just build in /tmp or somewhere else
that wasn't going to have a space in its path.
Revision
129 -
Directory Listing
Modified
Sat Apr 18 04:05:51 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Set OSNAME in program.mk rather than in each library that needs it.
o) If running OpenBSD, disable -Werror, since OpenBSD has an ancient compiler
that bogusly warns about private destructors without any defined friends.
Revision
128 -
Directory Listing
Modified
Sat Apr 18 01:23:26 2009 UTC
(16 months, 2 weeks ago)
by
juli
Original Path:
trunk
Make everything build on OpenSolaris.
o) Include <errno.h> in cases where the extern definition of errno may be
needed, in addition to <sys/errno.h>.
o) Remove serial interface support code, it has not been needed and will not
likely be needed in the WANProxy repository.
o) On SunOS, add -lnsl and -lsocket when using IO routines as networking
support requires them.
o) On SunOS, like on Linux, do not populate a 'len' field of a socket address.
o) Mark a bad assertion with a comment.
o) Don't use gethostbyname2(3) on SunOS, sigh. Would be good to write a
simple non-blocking resolver anyway...
o) Attempt to use the SunOS method of endianness-determination at compile
time. Hopefully I got that right.
Revision
127 -
Directory Listing
Modified
Wed Apr 15 08:48:31 2009 UTC
(16 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add missing includes of unistd.h for close and usleep.
Revision
126 -
Directory Listing
Modified
Tue Apr 7 09:32:29 2009 UTC
(17 months ago)
by
juli
Original Path:
trunk
Add a TODO to finally tackle the problem of IPv6, lack of a good network address
representation, etc.
Revision
125 -
Directory Listing
Modified
Tue Apr 7 07:58:30 2009 UTC
(17 months ago)
by
juli
Original Path:
trunk
Move the Timer class to the common module from the event module. It is a more
logical fit there with other general facilities like logging and buffers than
with the event system, which it has no direct relation to. This also means that
in the future the test code can do timing tests (since test support is in
common as well) and that tack now builds no gratuitous code.
Revision
124 -
Directory Listing
Modified
Tue Apr 7 07:54:55 2009 UTC
(17 months ago)
by
juli
Original Path:
trunk
Move networking-specific code out to 'net' library. Mostly wrappers for now,
but I'm sure that will change.
Revision
123 -
Directory Listing
Modified
Thu Apr 2 00:47:10 2009 UTC
(17 months ago)
by
juli
Original Path:
trunk
A better default configuration, maybe.
Revision
122 -
Directory Listing
Modified
Tue Mar 31 09:35:03 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Delete listeners, etc., on shutdown.
Revision
121 -
Directory Listing
Modified
Tue Mar 31 06:09:53 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Change the stop-handling API to a general register_interest API that can
register interest in all sorts of one-shot events. For now, just support the
EventInterestStop interest type. Others that are likely include
EventInterestIdle for when there's no events pending, EventInterestLowMemory for
when memory is becoming scarce, etc.
Revision
120 -
Directory Listing
Modified
Tue Mar 31 05:41:26 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Add stopping of ProxyClients.
Revision
119 -
Directory Listing
Modified
Tue Mar 31 05:28:57 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Add stop handlers for the proxy listeners and the flow monitor.
Revision
118 -
Directory Listing
Modified
Tue Mar 31 05:28:24 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Make poll and select EventPoll implementations friendly to EINTR like kqueue.
Revision
117 -
Directory Listing
Modified
Tue Mar 31 05:26:07 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
o) When deleting a CallbackQueue, make sure it's empty.
o) Make CallbackQueue::empty() const.
o) Add a SIGINT handler and a mechanism to stop and register for callback on
stop of the Event System.
o) The TimeoutQueue::perform function should always drain and remove its
CallbackQueue if it executes one at all. No need for all the back and forth
if there are multiple timeouts that expire at the same time.
o) Make it okay for kqueue to return EINTR.
o) Only claim that a TimeoutQueue is not empty if at least one of its
CallbackQueues is empty. The comment that used to be here was right --
since items can be removed from those queues by a cancel, it's important to
actually check.
Revision
116 -
Directory Listing
Modified
Mon Mar 30 04:10:52 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Drop references in the cache and then clear the hash map out, rather than
erasing and dropping reference on an entry at a time. The new way seems to be
quite a lot faster.
Revision
115 -
Directory Listing
Modified
Sat Mar 28 07:57:56 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Drop references to BufferSegments appropriately. Thanks, Valgrind!
Revision
114 -
Directory Listing
Modified
Sat Mar 28 07:03:25 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Drop references to BufferSegments as they are evicted from the XCodecWindow.
Revision
113 -
Directory Listing
Modified
Sat Mar 28 06:15:36 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Drop references when destroying the cache.
Revision
112 -
Directory Listing
Modified
Fri Mar 27 07:50:58 2009 UTC
(17 months, 1 week ago)
by
juli
Original Path:
trunk
Fix build with GCC 4.4, note some flags that may be useful in the future, etc.
Instead of including common/log.h and common/debug.h on the command line, just
include common/common.h, and let that include headers that are globally-desired,
namely stdint stuff and common/log.h and common/debug.h. Elsewhere, include
headers that are required at least with GCC 4.4 at least in GNU++0x mode to get
certain functions and constants to be visible.
Revision
111 -
Directory Listing
Modified
Sun Mar 22 23:57:11 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Don't use File when we basically want synchronous file semantics. (Especially
since poll doesn't seem to work right on Files.) Use an fstream to read the
config file.
Revision
110 -
Directory Listing
Modified
Sun Mar 22 20:30:33 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a CLI TODO.
Revision
109 -
Directory Listing
Modified
Sun Mar 22 10:31:37 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a hackish EventPoll implementation using select(2). I hate select(2).
Revision
108 -
Directory Listing
Modified
Sun Mar 22 07:59:11 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Remove the tcache subsystem until something is going to use it.
Revision
107 -
Directory Listing
Modified
Sun Mar 22 07:58:49 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Describe layout.
Revision
106 -
Directory Listing
Modified
Sat Mar 21 10:03:41 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a UDPClient.
Revision
105 -
Directory Listing
Modified
Sat Mar 21 07:06:34 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a comment.
Revision
104 -
Directory Listing
Modified
Sat Mar 21 06:05:27 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Trim elements from the tokens deque as they are processed, rather than
hand-coding offets. This will make it easier to write helper rouintes
for extracting common configuration elements.
Revision
103 -
Directory Listing
Modified
Sat Mar 21 05:54:42 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Use a deque rather than a vector for tokens.
Revision
102 -
Directory Listing
Modified
Sat Mar 21 05:01:20 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Use slightly less obscure names for the various XCodec components.
Revision
101 -
Directory Listing
Modified
Sat Mar 21 02:12:20 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Quote paths which could include spaces.
Revision
100 -
Directory Listing
Modified
Fri Mar 20 10:54:09 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Update TODO and *really* fix clock_gettime detection.
Revision
99 -
Directory Listing
Modified
Fri Mar 20 10:46:45 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Use our own clean target rather than hoping bsd.obj.mk will do it.
o) Define a no-action regress target for programs.
Revision
98 -
Directory Listing
Modified
Fri Mar 20 10:46:04 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Use the correct scheme to detect presence of clock_gettime(3).
XXX Does not try to detect available monotonic clock feature.
Revision
97 -
Directory Listing
Modified
Fri Mar 20 10:45:27 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
On Linux use librt for clock_gettime.
Revision
96 -
Directory Listing
Modified
Fri Mar 20 01:23:50 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a comment.
Revision
95 -
Directory Listing
Modified
Fri Mar 20 01:22:56 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Use typedefs for offset-hash and offset-seg pairs rather than spelling
out the full template every time.
o) Don't leak a refernece to a BufferSegment if there's a first-pass
collision.
o) Remove some comments from the block before the main encode function
which are being replaced by inline comments reflecting where work can
be done or where it has been done. Namely:
o) Comment where we should be (first) caching the database_ presense, so we
avoid having to search the giant hash when we already know the results in
a more local context.
o) Don't add redundant possible-declarations to the offset-hash map. Also
note where it is possible to do declarations in the first pass without
resorting to the second pass.
The last item results in a 30% performance boost (statistically significant)
on random data and no statistically significant performance change on zero
data.
Revision
92 -
Directory Listing
Modified
Thu Mar 19 09:34:26 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Correctly escape short data.
Revision
91 -
Directory Listing
Modified
Thu Mar 19 08:47:55 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Remove hash printing code.
Revision
90 -
Directory Listing
Modified
Thu Mar 19 08:47:29 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Explicitly construct timeout_queue_.
Revision
89 -
Directory Listing
Modified
Thu Mar 19 04:58:49 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Use a typedef for a typedef rather than silly struct inheritance.
Revision
88 -
Directory Listing
Modified
Thu Mar 19 00:53:34 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Fix include guard spelling.
Revision
86 -
Directory Listing
Modified
Thu Mar 19 00:43:11 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Increase the backref window size by one. This breaks interoperability.
Revision
85 -
Directory Listing
Modified
Thu Mar 19 00:27:24 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Remove dead include.
Revision
84 -
Directory Listing
Modified
Wed Mar 18 19:28:24 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Fold XCodecSlice into XCodecEncoder.
o) Make XCodecEncoder::encode() the equivalent of XCodecSlice::process()
followed by XCodecSlice::encode(). This gets rid of some intermediate
data structure usage and makes our performance better than the old
XCodecEncoder, in a single, reasonable function that is well-commented.
Revision
83 -
Directory Listing
Modified
Wed Mar 18 19:13:23 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Reserve the correct amount for the data_ vector.
o) Get rid of the XCodecSlice::prefix_.
Revision
82 -
Directory Listing
Modified
Wed Mar 18 19:07:58 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Don't make XCodecSlice create more XCodecSlices, there's no need. We've
now well-encapsulated the child data, so create an XCodecSlice::Data
struct to reflect that, much like xcodec_slice.
o) Make the children just a vector of XCodecSlice::Datas.
o) Make declarations_ a std::set since the Data will have a BufferSegment.
o) Get rid of the type_ of XCodecSlice now.
o) Hash all input, not all but the last XCODEC_SEGMENT_LENGTH.
o) Since we're no longer recursive, we can make decisions when outputting the
references in encode()...
o) Copy the declarations_ set to a local variable called 'need_declared' in
encode so that we can output declarations when they are referenced, and be
sure to output them only once. This restores locality of reference. It
also puts us back in the situation where we wonder if we need to make a
DECLARE/HASHREF pair, or if we can have DECLARE imply HASHREF.
Revision
81 -
Directory Listing
Modified
Wed Mar 18 19:03:06 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Print out the hashes in a mismatch.
Revision
80 -
Directory Listing
Modified
Wed Mar 18 18:13:03 2009 UTC
(17 months, 2 weeks ago)
by
juli
Original Path:
trunk
Choose the correct boundary for the 'base' variable.
Revision
79 -
Directory Listing
Modified
Wed Mar 18 10:20:05 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Update TODO.
Revision
78 -
Directory Listing
Modified
Wed Mar 18 10:19:20 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Don't include <deque> here.
Revision
77 -
Directory Listing
Modified
Wed Mar 18 10:18:32 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Double performance on random data by not using a map<> where we can ensure
ordering otherwise, and don't need random-access. For now, use a deque.
Revision
76 -
Directory Listing
Modified
Wed Mar 18 09:53:43 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Fix some style bugs, mostly in comments.
Revision
75 -
Directory Listing
Modified
Wed Mar 18 09:48:06 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Get rid of wonky reordering, etc., and improve performance 4x.
Revision
74 -
Directory Listing
Modified
Wed Mar 18 09:27:42 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Write the new slice/encoder.
o) Track declarations needed by a slice and its children.
o) Look for redundant data using algorithms explained in the code.
o) Get rid of trying to slice the data up into smaller working units. The
only gains that gives are related to locality of reference, which is
absolutely broken now, but likely to be fixed.
Performance is below that of the old encoder by a few times in the case of
data with a lot of redundancy, but it's probably fairly easy to fix that,
at least for some data sets. Comments explain the plan-of-action and the
perceived problem space.
Random data performs about as well, it seems, in terms of streaming rate.
And even if performance is worse, that's to be expected since there's no
more crazy inlining, and probably a worthwhile trade-off since this version
of the encoder is humanly-comprehensible (and full of almost-useful
comments.)
Revision
73 -
Directory Listing
Modified
Wed Mar 18 09:13:50 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Do the right thing if a hash is in the window twice.
Revision
72 -
Directory Listing
Modified
Wed Mar 18 09:10:48 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add a Buffer::moveout variant to yield the first BufferSegment.
Revision
71 -
Directory Listing
Modified
Tue Mar 17 22:19:00 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Start work on a class that slices up input so it can be encoded optimally.
For now it just escapes everything.
o) Rename XCODEC_CHUNK_LENGTH to XCODEC_SEGMENT_LENGTH.
Revision
70 -
Directory Listing
Modified
Tue Mar 17 09:28:00 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Use a dummy encoder that just escapes special characters. The encoder is
going to be rewritten over the next few days and having a blank slate helps
me focus.
Revision
69 -
Directory Listing
Modified
Tue Mar 17 09:27:27 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Don't name unused argument.
Revision
68 -
Directory Listing
Modified
Tue Mar 17 03:46:18 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
If NDEBUG is not set, set -g.
Revision
67 -
Directory Listing
Modified
Sun Mar 15 06:48:13 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add a desperately-desired item.
Revision
66 -
Directory Listing
Modified
Sun Mar 15 06:40:59 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Vastly improve the decoder despite keeping it mostly the same:
o) Be more tolerant of errors in the stream, and don't use exceptions
to detect them. Most importantly, don't crash because of them.
o) Keep track of the number of bytes in the input Buffer and use that
to figure out how long to loop, etc., rather than looking into the
Buffer all the time to figure out whether it's empty (and sometimes
what its length is.)
o) Loop over un-escaped non-special data aggressively. There's going to
be some in every stream and we should process it well.
o) Don't leak segments in the event that some errors occur.
This translates into a slight performance increase (less slight with some
workloads), a huge reliability boost and a good chance to improve the
comments and clarity of the code.
Revision
65 -
Directory Listing
Modified
Sun Mar 15 06:33:52 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Add an option, -Q, to output nothing at all.
Revision
64 -
Directory Listing
Modified
Sun Mar 15 02:51:49 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Don't use bsd.prog.mk where bsd.subdir.mk is desired.
o) Make TCPClient just give the user a Socket. There's no reason they
would want to have to go through some silly wrapper class.
o) Get rid of a warning in file.cc by returning NULL if HALT()<< for
some incomprehensible reason doesn't return. I hate GCC.
o) Make TCPClient::connect ASSERT that it can get a Socket rather than
having it return NULL, since nobody checks its return value anyway.
o) Make program.mk not rely on bsd.prog.mk (just bsd.obj.mk.)
o) Crank up warnings a bit.
Revision
63 -
Directory Listing
Modified
Sun Mar 15 02:24:55 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Default to C99 compilation on systems that support CSTD.
Revision
62 -
Directory Listing
Modified
Sun Mar 15 02:24:37 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Default to kqueue(2) on FreeBSD and Darwin, poll(2) elsewhere.
Revision
61 -
Directory Listing
Modified
Sat Mar 14 05:05:01 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Document some thinking on a recent TODO item.
Revision
60 -
Directory Listing
Modified
Fri Mar 13 06:40:22 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Rename sets of listeners to be more appropriate.
Revision
59 -
Directory Listing
Modified
Fri Mar 13 06:32:04 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Use gethostbyname2.
Revision
58 -
Directory Listing
Modified
Thu Mar 12 23:40:57 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Don't COW a BufferSegment just because we'd like to append to it.
Leave it shared and create a new BufferSegment.
Revision
57 -
Directory Listing
Modified
Thu Mar 12 23:17:09 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Update TODO.
Revision
56 -
Directory Listing
Modified
Thu Mar 12 22:10:06 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
Start playing around with XML serialization of flow information. This
will be useful when there's a socket front-end to the flow monitor.
Revision
55 -
Directory Listing
Modified
Thu Mar 12 04:09:25 2009 UTC
(17 months, 3 weeks ago)
by
juli
Original Path:
trunk
o) Make the Event callback system no longer require a void * user data argument.
Instead, provide two callback classes, one with a user-specified argument, one
with none and one with an argument type specified by a template parameter.
For now the only consumer of user-specified arguments still uses a void *.
Revision
54 -
Directory Listing
Modified
Mon Mar 9 18:35:27 2009 UTC
(17 months, 4 weeks ago)
by
juli
Original Path:
trunk
o) If a segment is already in the database, use the copy of it from the database
for the backref window, rather than keeping around a gratuitous copy.
o) Remove some stale comments.
Revision
53 -
Directory Listing
Modified
Sat Mar 7 07:48:12 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Fix compilation on (stupid) systems where ntohs is a macro.
Revision
52 -
Directory Listing
Modified
Sat Mar 7 04:40:20 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Remove unused include.
Revision
51 -
Directory Listing
Modified
Sat Mar 7 04:38:41 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
o) Make it possible to get the underlying Socket from a TCPClient.
o) Add getpeername() and getsockname() to Socket, returning strings.
o) Handle EOS in ProxySocksConnection for when a client goes away before
it finishes authenticating and connecting outwards.
o) Add a FlowTable structure for registering flows.
o) Parameterize proxy listeners and such with a FlowTable.
o) Make ProxyClient manage flow table entries.
o) Pass Sockets around rather than Channels where we want to be able to
do things like getpeername()/getsockname().
o) Fix WANProxyConfig log handle.
o) Create a FlowMonitor which reports on flow table entries.
o) Add flow-monitor and flow-table commands to start a FlowMonitor and to
create FlowTables.
o) Make proxies specify which FlowTable their clients go into.
Revision
50 -
Directory Listing
Modified
Sat Mar 7 04:32:27 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Temporarily back out r45.
Revision
49 -
Directory Listing
Modified
Fri Mar 6 10:05:53 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Fix code to correctly handle priority masks.
Revision
48 -
Directory Listing
Modified
Fri Mar 6 08:05:45 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Update TODO.
Revision
47 -
Directory Listing
Modified
Thu Mar 5 20:14:26 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Use gettimeofday if clock_gettime / CLOCK_MONOTONIC is not available.
Revision
46 -
Directory Listing
Modified
Thu Mar 5 11:21:02 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
o) Consolidate all of the decoder funcitons into the decode() function for now.
o) Add some DEBUG if we decode only some data due to there not being enough buffered
to decode the current command.
o) Use the existing seg if we're trying to enter a sum that already exists (and is
correct) in the database.
XXX Really should rewrite encoder and decoder at some point. Or at least make it so
the decoder fails more gracefully.
XXX I did this work in search of an infinite loop due to a ESCAPE at end of input.
How did it get there!? Is there an encoder bug? Could not reproduce.
Revision
45 -
Directory Listing
Modified
Thu Mar 5 11:16:45 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Handle the decoder failing gracefully.
Revision
44 -
Directory Listing
Modified
Thu Mar 5 11:16:22 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
o) ASSERT that we're not trying to skip bytes on an empty Buffer.
o) Return immediately if we're just clearing a whole Buffer in trim/skip.
Revision
43 -
Directory Listing
Modified
Thu Mar 5 05:43:59 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
o) In polling code, if idle sleep using usleep/nanosleep if a wait is
okay, rather than spinning.
o) Whitespace cleanup.
o) Add an example program for timeout usage.
o) Fix timeout interval calculation.
o) Fix NanoTime conditionals.
Revision
42 -
Directory Listing
Modified
Thu Mar 5 04:15:05 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
o) Use millisecond waits and timeouts.
o) Internally use a monotonic nanosecond clock for TimeoutQueues.
Revision
41 -
Directory Listing
Modified
Thu Mar 5 03:45:50 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Add mistakenly-omitted Makefile.
Revision
40 -
Directory Listing
Modified
Thu Mar 5 02:39:39 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
o) Create Adler64 from Adler32.
o) Reimplement XCHash in terms of Adler64 with a custom functor to
mix the internal state.
Revision
39 -
Directory Listing
Modified
Thu Mar 5 02:21:51 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Add Adler32.
Revision
38 -
Directory Listing
Modified
Thu Mar 5 02:05:02 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Close a race whereby:
1) Channel X closes its file descriptor, N.
2) An Event::Done for close is queued.
3) A pending callback which creates a socket is called, which is given
file descriptor N, since it's free. This would blow up since when
the channel attaches to the socket, N will be found to be in use by
the IOSystem. Even if it didn't blow up:
4) The Event::Done for the close is delivered, channel X detaches from
socket N and finds it is not closed anymore.
Do this by keying the IOSystem's Handle map with a std::pair of file descriptor
and Channel. This may even allow for Channels to pass file descriptors to each
other if we get rid of the need to close before detach.
Revision
37 -
Directory Listing
Modified
Thu Mar 5 01:02:32 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Comment a race I noticed last night.
Revision
36 -
Directory Listing
Modified
Wed Mar 4 09:13:44 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Add a singleton IOSystem which manages IO requests (close/read/write.) It may
at some point use lio_listio or similar to batch up IO requests. This moves
some code out of FileDescriptor. It also means we have to remove some
assertions from Socket and FileDescriptor since they no longer have visibility
into close() calls.
Revision
35 -
Directory Listing
Modified
Wed Mar 4 02:57:29 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Add the alg hierarchy to the build.
Revision
34 -
Directory Listing
Modified
Wed Mar 4 00:24:54 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Add an IO grouping TODO.
Revision
33 -
Directory Listing
Modified
Tue Mar 3 09:12:43 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Get rid of the unspecified-amount overload/default for read(). Explicitly
specify 0 for the read amount if there is no preference.
Revision
32 -
Directory Listing
Modified
Tue Mar 3 08:11:47 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Add a command line option to dump timer samples.
Revision
31 -
Directory Listing
Modified
Tue Mar 3 06:45:00 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Move HashMatch out as XCodecEncoderMatch.
Revision
30 -
Directory Listing
Modified
Tue Mar 3 05:31:57 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Add a microsecond-sampling mechanism and use it to instrument tack.
Revision
29 -
Directory Listing
Modified
Tue Mar 3 04:24:38 2009 UTC
(18 months ago)
by
juli
Original Path:
trunk
Don't implement the decoder in a header. It doesn't make a big difference in the
performance and complicates many other things.
Revision
28 -
Directory Listing
Modified
Sat Feb 28 01:32:13 2009 UTC
(18 months, 1 week ago)
by
juli
Original Path:
trunk
Create a directory for implementations of miscellaneous and marginally-useful algorithms.
Revision
27 -
Directory Listing
Modified
Sun Feb 22 22:24:38 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Use a simpler log message format.
Revision
26 -
Directory Listing
Modified
Sun Feb 22 18:53:18 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Remove debugging messages that will certainly run before log masks could be
configured.
Revision
25 -
Directory Listing
Modified
Sun Feb 22 18:51:48 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a facility to control the verbosity of the log with regular expressions.
Revision
24 -
Directory Listing
Modified
Sun Feb 22 07:59:03 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Grrr. Definition of timeval isn't very standard, so just use %u.%06u and
cast to unsigned. That'll be good enough for a long time. (No pun intended.)
Revision
23 -
Directory Listing
Modified
Sun Feb 22 07:55:25 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Use tcpdump-style timeval timestamps of all log entries.
Revision
20 -
Directory Listing
Modified
Sun Feb 22 01:27:54 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Bump copyright.
Revision
19 -
Directory Listing
Modified
Sun Feb 22 01:24:18 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
When drain() is called, return immediately if we're already performing a
callback to tell ProxyClient why we'd like to disappear.
Revision
18 -
Directory Listing
Modified
Sun Feb 22 01:19:57 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Add a drain function to ProxyPipe that tells it there will be no more data
inbound for it and that it should finish writing its data and then disappear.
Call this from ProxyClient whenever we get flow_complete and there is an
active pipe.
Revision
17 -
Directory Listing
Modified
Sun Feb 22 00:58:02 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Pass errno when accept fails.
Revision
16 -
Directory Listing
Modified
Sun Feb 22 00:48:33 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Add some more assertions to ProxyPipe around errors and cancelling.
o) When ProxyClient cancels us before we've told it we're done or there's an
error we must cancel any outstanding actions.
Revision
15 -
Directory Listing
Modified
Sun Feb 22 00:30:09 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Disable SIGPIPE to work around a deficiency in ProxyPipe/ProxyClient.
Revision
14 -
Directory Listing
Modified
Sun Feb 22 00:21:59 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) If an accept fails in one of the listeners, we should keep trying to accept.
XXX Maybe we need to check the errno.
o) Switch to the new ProxyPipe code and rewrite the ProxyClient for it.
o) Update TODO to mention a race that could lead to SIGPIPE.
Revision
13 -
Directory Listing
Modified
Sat Feb 21 10:19:13 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Start work on a ProxyPipe class, not hooked up to anything, to replace the ugly
hack that is ProxyPeer. ProxyClient will instead work in terms of a pair of
pipes, I believe.
Revision
12 -
Directory Listing
Modified
Sat Feb 21 03:41:19 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
State my resounding confidence in the proxy code.
Revision
11 -
Directory Listing
Modified
Sat Feb 21 03:29:26 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Lazily SOCKS5 support.
Revision
10 -
Directory Listing
Modified
Fri Feb 20 13:26:48 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Fix accidental boolean inversion.
Revision
9 -
Directory Listing
Modified
Fri Feb 20 13:22:07 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
As in the case of a missing hash, give a failure for duplicate hash.
Revision
8 -
Directory Listing
Modified
Fri Feb 20 13:19:30 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Temporarily make XCodecDecocer::decode return a boolean, false if there's a
fatal error. (Namely, that a hash could not be resolved, in which case we
reset the connection.)
o) Reset the connection if decode fails, per above.
Revision
7 -
Directory Listing
Modified
Fri Feb 20 13:11:22 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Change priority of some INFO messages to DEBUG.
Revision
6 -
Directory Listing
Modified
Fri Feb 20 12:52:57 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Do as the XXX suggests and avoid starting the local peer until the remote peer
is connected. Otherwise we would blow up when close_peer() is called while we
are still connecting to the remote peer. Now, maybe the right thing to do is to
fix that case to work properly so we can buffer lots of data from a client that
is starting out with a lot of data, but really that's an uncommon case so for
now do the easy thing.
Revision
5 -
Directory Listing
Modified
Fri Feb 20 12:36:32 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Update TODO to reflect things that came up working on the SOCKS4 mode.
Revision
4 -
Directory Listing
Modified
Fri Feb 20 12:35:58 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
o) Add a parameter to Channel::read to take an amount to read, defaulting to 0,
which retains the old behavior of reading whatever amount is available.
o) Implement new Channel::read semantics in FileDescriptor::read. Add buffering
to FileDescriptor.
Note that this tries to only read the amount specified by the caller, which
may not be most efficient, but may provide the right behavior in terms of
not acknowledging data?
o) Add ugly hackish redundant APIs to support numeric IP addresses in addition
to strings.
o) Use said ugly hackish API to implement a simple SOCKS4 proxy. It's a very
conservative proxy that tries to be discreet (in that it doesn't send errors
to clients sending random requests.)
XXX SOCKS5 would be nice.
o) Modify the default config to show chaining through to the SOCKS4 proxy.
Revision
3 -
Directory Listing
Modified
Tue Feb 17 03:23:58 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Comment BufferSegment functions and add a missing check in
BufferSegment::prefix().
Revision
2 -
Directory Listing
Modified
Mon Feb 16 08:42:45 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Nuke the history file. This may not be a great idea, but I think that now that
Subversion is available publically it's pretty redundant.
Revision
1 -
Directory Listing
Added
Mon Feb 16 08:26:47 2009 UTC
(18 months, 2 weeks ago)
by
juli
Original Path:
trunk
Initial import of public WANProxy codebase.
Based on r238 in the Marvelous Proof repository.