Quick Note

Somebody sent Your JoeDog a patch that he promptly lost. If that person could resend it, he’d very much appreciate it…..

UPDATE: Your JoeDog found the patch. It’s a fine piece of work by Valery Levental.  The patch tested out and was submitted to version control. In all likelihood, we won’t release a beta distribution. You can grab the code off github.com.

This patch

  1. Fixes our improper handling of the Data URI scheme
  2. Fixes our improper handling of HTTP 1/1 responses containing Content-Length: 0
  3. Improves our handling of chunked transfers
  4. Further optimizes the http header parser.

Some siege users have reported hangs with version 4.x.x This update may fix those conditions (although in some cases, the problem was tied to a specific version of glibc.)



Siege 4.0.1

Your JoeDog is pleased to announce the release of siege-4.0.1.

This release contains no recognizable goodies for you to play with but it will probably reduce the number of times you curse at us. It is primarily a bug fix.

You knew that was coming, right? Some of you may have put off the move to 4.x in anticipation of the blessed 0.0.1 bug fix release. Well, here it is!

This release includes a patch by Niklas Hambüchen which improves the efficiency of chunked encoding reads. It also includes a patch by Warren Young which improves / fixes issues with cookie handling and expiration. Trent Oswald included additional default MIME types and V.  Filanovsky added support for URLs longer than 4096 characters.

The release also includes several other minor bug fixes and documentation errors.

If you’re running version 4.0.0, then you should probably upgrade.

[SIEGE RELEASE: 4.0.0]



Siege Release: 4.0.0

Good news, JoeDoggers. Siege 4.0.0 is finally out of beta.

While this release contains exciting new features, it’s built upon a major architectural overhaul. For most of you, these changes will go unnoticed but they will certainly make things better for Your JoeDog.

Did you ever look at code you wrote fifteen years ago and wretch? Large portions of this program invoked that reaction. Siege was originally written in 1999 and as such it contained large portions of code that were styled like we coded back in 1999, i.e., suckishly.

Your JoeDog still prefers C to C++ but that doesn’t mean he’s averse to object oriented design. In fact, he loves himself some objects. Just because you code in C doesn’t mean you can’t enjoy the benefits of OO design. Afterall, what is an object other than a thing that references itself? With Siege-4.0.0 nearly all code modules were reworked as objects. This makes debugging so much simpler which gives Your JoeDog a happy.

Who cares? What about the features?

  1. HTML Parser — The most significant new feature is page parsing. When siege makes a request, it will download the page and parse it for elements like style sheets, javascripts, images, etc. It will then make ensuing requests for all those items.
  2. Cookie Persistence — It persists cookies according to directives set by the server. They are stored in $HOME/.siege/cookies.txt on a thread by thread basis.
  3. Color Output — Or more importantly, non-color output. Siege 4.0.0 allows you to turn off color output using ‘color = off’ in your siege.conf file.
  4. Cache Support — Siege has always had some cache support, but this version is more compliant with RFC 2616. See the documentation for more information.

[SIEGE: Release 4.0.0]



Test Connectivity To An AJP Server With AJPing

Your JoeDog is pleased to announce a new utility for your fun and games. This is a full-featured version of a perl script we wrote and which is now implemented in C. Introducing AJPing.

This program began life as a snippet which should pave the way for Apache JServ Protocol (AJP) support for siege. Since it’s very useful for checking connectivity and/or measuring the health of a servlet engine, we decided to release it as a fully functional utility.

AJPing supports both IPv4 (default) and IPv6. You can invoke the latter with a command line switch. Let’s take a look at this puppy in action, mmmkay?


Bully $ ajping -i6 -r5 ajp://ip6-localhost:8009/
--- ajping v1.0.1 to ip6-localhost:8009 ---
5 bytes from ip6-localhost (::1): seq=1 time=979 ms
5 bytes from ip6-localhost (::1): seq=2 time=257 ms
5 bytes from ip6-localhost (::1): seq=3 time=199 ms
5 bytes from ip6-localhost (::1): seq=4 time=235 ms
5 bytes from ip6-localhost (::1): seq=5 time=239 ms

--- ip6-localhost:8009 ajping statistics ---
5 packets sent, 5 received, 0% packet loss, time: 1909 ms
rtt min/avg/max = 199/381/979 ms

The first thing you’ll notice is the output looks a lot like ping. That was by design. AJPing sends and receives 5 byte packets and measures the round trip time in milliseconds. When the run is complete, it summarizes the transaction stats in the statistics section of the output.

[AJPing: Initial Public Release]

 



Code Release: Siege 4.0.0 beta 6

Siege 4.0.0 is inching closer to final.  This release adds a coat of wax and refines the documentation. The code is largely complete with no new functionality planned this version. Your JoeDog is still trying to decide which new features to enable by default.  Currently, the HTML parser is set to ‘off’ but we’re leaning toward enabling it. New major release; new major feature.

The big push to 4.0.0 began in October when we started tweaking 3.x in a manner consistent with the 4.0 vision. Since then, countless hours have gone into this architectural overhaul. It’s nice to finally see the finish line. Once this effort finally winds down we can go back to using this blog for its intended purpose: Smearing more snark on the Internets.

Help Your JoeDog and America

Your JoeDog doesn’t ask for much. We give this code away and answer your questions for free! We answer your questions even when the answers are in the FAQ. In fact, sometimes we paste the FAQ into our email response. Do we ever tell you to RTFM? No! Should we? Probably.

Unfortunately, we have a long history of people refusing to use our beta releases. The Siege 4.0.0 betas have been downloaded around 50 times over a period that saw thousands of 3.x downloads.

So we’re begging you. Please download Siege 4.0.0 beta 6 and put it to the test. Make sure to enable the HTML parser in the $HOME/.siege/siege.conf file. When you’re done, send an email or leave a comment and let us know what you think.

Download

All of our software can be downloaded from http://download.joedog.org/ Below you’ll find a direct link to Siege 4.0.0 beta six. Happy hacking.

[SIEGE 4.0.0 beta 6]



Siege 3.1.4

Your JoeDog just released siege-3.1.4. Exciting! Oh, don’t get carried away, it’s just bug fixes. {sad trombone} We patched portions of the code from 4.x.x which is still in beta.

The 3.x.x line will be maintained with patches and fixes at least through 2016 but we don’t plan to add any new features. That effort is concentrated solely in the 4.x.x branch.

[SIEGE: 3.1.4]

 



Siege 4.0.0 beta 4

Siege 4.0 is now in beta four. It will probably be months until the final version is released. This release isn’t riddled with bugs as much as it’s simply lacks refinement. Let me explain.

What distinguishes Siege 4.0 from earlier versions is this. It downloads the HTML and parses it for additional page elements. It looks for images, stylesheets, javascript, etc., and adds them to a queue for download. In this sense, it behaves a lot like a browser. Suddenly we’re forced to care about things we never cared about. Consider Content-encoding.

Earlier versions provided a directive called ‘accept-encoding’ in the siegerc. We let you put anything you pleased in there.  If you wanted the server to send brotli, bzip2, compress, whatever, we didn’t care. Siege didn’t do anything with its download. It counted the bytes and discarded the content. Now all of a sudden it cares about content.

We encourage you to play with these beta releases and provide us feedback. In the meantime, we’ll continue to refine the program. Given the example above, we’ll detect your compression libraries at compile time and build a Accept-encoding header based on what your computer can accept. Can you support bzip2, gzip and deflate?

Accept-encoding: gzip; deflate; bzip2

Until then, you’re on your own.

[SIEGE RELEASE:  4.0 beta 4]



A Siege Major Release

You guys asked for it and Your JoeDog delivered! The problem is you guys asked for it fifteen years ago and Your JoeDog delivered yesterday.

Beginning with version 4.0.0 beta 1, siege will parse the requested HTML document for additional elements such as style sheets, javascripts, images, etc. and make additional requests for those elements. This feature is still considered experimental so it’s off by default. To enable the parser you need to add this directive to your $HOME/.siege/siege.conf file:

parser = true

Siege was originally designed with performance in mind. Every thread basically dumped its HTML into the same bucket. This made parsing the content impossible without a design change. The choices were to wrap the reads with thread locks or create individual buckets for every thread. The former option would dramatically decrease performance and the latter option will require a lot of RAM. Imagine, if you will, running 255 browser tabs at once. “Meh,” Your JoeDog thought, “RAM is cheap now.”

We want to get the new version into your hands as soon as possible so it’s available with a few caveats:

  1. Don’t use gzip’d encoding – it will handle it but it’s not ready for prime time.
  2. Don’t expect cache validation to work – it requires a design overhaul
  3. Don’t expect it to parse poorly formatted HTML
  4. Element requests are sequential. We plan to make them concurrent.

There’s still a lot of work until 4.0.0 is ready for Prime Time but it can serve you well as long as your keep its limitations in mind.

[SIEGE RELEASE: 4.0.0-beta2]

 



Cookie Monster

Your JoeDog overhauled siege’s cookie handling. It was re-written in an object-oriented manner which makes maintenance and debugging simpler. That’s good for me, Your JoeDog, but what about you, Your Siege User?

Siege 3.1.4 will have two noticeable changes. Individual configuration files have moved and cookies will now persist between runs. In order to be tidy, we created $HOME/.siege The resource file was moved from $HOME/.siegerc to $HOME/.siege/siege.conf A new file will also be added to that directory. Your cookies will be stored in $HOME/.siege/cookies.txt At some point we’ll probably move the urls.txt file there as well.

We’d appreciate if you could test it. You can find it here: Siege-3.1.4b2

 



The United Shoots Of America

San Bernadino ShootingBy now you’ve heard that we had another mass shooting in the United States. It was our 351st of the year — fourteen more and we get a free ice cream! The shooting was in San Bernardino and #SanBernadino was trending on Twitter. The world already thinks we’re violent, guys. Do we need them to think we’re stupid, too? Learn to spell the town that’s currently under fire.

Wars and shootings are how America learns geography. Nobody knew where Baghdad was until we bombed it.

So this particular shooter left an office holiday party in a fit of rage. He returned with his wife and they shot up the place. So this much is clear: Office parties suck! Let’s face it. The only thing we have in common is we applied for a job in the same company. Now we have assholes showing up with guns. Your JoeDog would rather stay at home and hack some code.

We learned this particular office asshole was stockpiling ammunition and bombs. When police searched his vehicle, they found 6000 rounds of ammunition and a dozen pipe bombs. Now that’s a guy who hates his co-workers.

Some of you may think Your JoeDog’s a bit flippant about this whole ordeal, telling jokes and dropping snark. For the past thirty years we’ve tried “thoughts and prayers.” When someone shot up a public place, we gave thoughts and prayers. Over the last thirty years we gave a lot of thoughts and a lot of goddamn prayers.

Well guess what? They don’t fscking work. Your JoeDog’s just going to do what he does best: Toss spit balls from the back of the room. You know what’s annoying and gross? Spitballs. If we plaster the people who own this country with enough of them maybe they’ll finally act. God knows thoughts and prayers don’t work.