Thursday, October 29, 2009

PeerBlock 1.0+ (r202) Interim Release

We have a new Interim Release uploaded - you can find it here: PeerBlock 1.0+ (r202) Interim Release!

Please note that our new website is apparently having some problems handling redirected URL links, which is why we're directing you here first... Sorry about the inconvenience, we're working on sorting that all out and will update the "update detected" redirect shortly.

        ---  Mark  ---

Friday, October 2, 2009

PeerBlock 1.0+ (r187) Interim Release

We finally got a new Interim Release uploaded for you - check it out on our new site here: PeerBlock 1.0+ (r187) Interim Release!

        ---  Mark  ---

Wednesday, September 30, 2009

PeerBlock 1.0 Launch Party!

To celebrate the recent release of PeerBlock 1.0, I'm trying to put together a little get-together for PeerBlock users local to the New York City area. Our webstats show a few thousand users from in and around NYC - if you're one of them, you should stop by!

More details can be found on our main site: PeerBlock 1.0 Launch Party.

Hope to see you there,

        ---  Mark  ---

Wednesday, September 23, 2009

PeerBlock r172 Interim Release - 1.0 Release Candidate 2

We've fixed a few issues with our previous r162 "PeerBlock 1.0 Release Candidate" release, so wanted to get some additional airtime with one more Release Candidate before we announce PeerBlock 1.0 on the main site. Unless any of you report an extremely critical "show stopper" type bug within the next few days, we're planning on releasing a PeerBlock 1.0 version on the main site this weekend.

Once again, though, please remember that this is still an Interim Release, and as such will be updated more often than a Public Release would, and could potentially still contain some bugs. We will still be making a few changes before we release PeerBlock 1.0, but will release a "PeerBlock 1.0 'RTM'" version at that same time so that you all get those changes at the same time.

What's Changed

Here's what's different between the last Interim Release (r162) and this one. Not as many as last time, don't worry...
  • Fix for Outlook 2010 / Live Mail problem - For some reason if you were running Outlook 2010 or the MS Live Mail desktop client, PeerBlock could experience some problems if you tried starting up a second instance of it - the second instance of peerblock.exe would show up in the task manager until you exited that email program. This is fixed now!
  • Default "Show Splashscreen" to False - Due to many peoples' complaints about how bad the splashscreens looked (my attempt at lame "programmer art" early on, sorry), and the fact that they really are quite unnecessary, we're now defaulting this option to False on fresh installs. You can always turn 'em on yourself if you want to see them. Won't affect you on upgrade, unless you reset PeerBlock's settings on install.
  • Added "View" Buttons to List Manager - You can now view the contents of your Default Lists. This was an unintended consequence of moving these lists to checkboxes: there was no way to view them anymore!
  • Default List Descriptions Swapped - Previously, the "Spyware" and "Advertisements" lists' descriptions on the List Manager were swapped.
  • Disable Exception Reporting - We don't have a server (or software written to run on one) available to receive this sort of data right now, so disabled the built-in automatic exception reporting (that "this problem has been reported to Phoenix Labs" stuff).
  • More Performant Tracelogging - Updated the tracelogging routine to abort more quickly if we're attempting to log a message at a level below that which we're currently configured to display. This should help out a (minor? insignificant?) bit with overall performance of the app.
  • "XP dropdown list squashed" UI Issues - Think we've found the last of these: the "Protocol" and "Action" in both the main History window and the File -> Export to... menu of the History window.
  • Remove .DMP on Uninstall -Not that you're ever going to want to uninstall PeerBlock of course, but just in case you do for whatever reason we will now clean up that peerblock.dmp file (if created) instead of leaving it around on your disk.
  • User Manual - We're starting to put together an HTML User Manual for PeerBlock. In addition to hosting this on our main site, this will be included in your installs. Note that since we're trying to make this usable by newbies as well as experienced users we're including lots of screenshots; this has caused the size of our download to increase by about 500k. Also note that the documentation is still under construction at this point - and yes it's utterly unstyled and incomplete - we're only including it here to make sure that our Installer stuff is correctly installing/uninstalling it so that we'll be ready to rock once PeerBlock 1.0 comes out. If there's anything you'd like to see in there, please let us know!

Known Issues

Again, the Installer for this version will not detect whether a pre-r162 PeerBlock is running or not. So if you're upgrading from r131 or earlier, it is important that you make sure that PeerBlock is not running before installing this one.

Other issues can of course be found on our Issue Tracker.

Get it Here

PeerBlock r172 Installer - This is the recommended download for most users.

PeerBlock "Portable" Packages:

We're Almost There...!

Thanks to everybody who donated after I mentioned last time that we were "underwater" as far as donations go!

We're now up to $880 worth of total donations, versus $817 worth of expenses! But don't forget, we are still accepting donations to help pay for rental of a VPS server which should let us create a "real" online-update feature, and we will of course be needing to purchase another $230 code-signing certificate in less than 12 months. So if you find PeerBlock useful, please consider donating a few dollars to help keep us afloat!

And again, to all those who have donated already - multiple times for some of you - THANKS! We wouldn't be where we are today if it wasn't for your generosity.

Expect another Interim Release to be posted sometime around this weekend, to coincide with the release of our official PeerBlock 1.0 release - maybe 24 hours earlier to get an ultra-quick "sanity test" out of it. After that it will likely be a few weeks until the next one, unless we have to release something to fix a particularly nasty bug. But don't worry, we are far from done! Lots of stuff on our "To-do List", including some stuff that we really haven't wanted to start working on yet so that we don't destabilize things while we're gearing up for 1.0. I'll post more about where we're headed next week, after 1.0 is out the gates...

Thanks again for all your support, whether it be monetarily, reporting bugs or suggestions, or even just sending in a little "Thank you, you guys rock!" feedback.

        ---  Mark  ---

Thursday, September 17, 2009

PeerBlock r162 Interim Release - now with a signed driver!

UPDATE: This release is no longer the latest available! It is strongly recommended that you upgrade to the latest Interim Release instead.

Here it is: a signed-driver-containing PeerBlock 1.0 Release Candidate!

At this point we have pretty much all of the "showstopper" type bugs fixed, so think we're pretty much ready for an official 1.0 stable PeerBlock Public Release. However, we need your help! We'd obviously prefer for our 1.0 release to be truly stable, so if you encounter any problems with it please let us know. I've seen comments on various forums/review-sites in the format "I keep starting it but it won't start. FAIL!" - no additional info, no attempt to contact us about it, no nuthin'. This doesn't help anyone! If you're experiencing problems, PLEASE let us know about them . . . and if we have any followup questions please get us the extra information we're looking for. We actually try to be pretty good about addressing user issues, but we can't fix bugs we don't know about! And PeerBlock is running just fine on my machine...

So please, help us make PeerBlock better!

Okay, off my soapbox now. Don't forget that this release is an Interim Release, which means that it will check for new Interim Releases whenever it checks for updates. Depending on how this release goes, we may need to release another Release Candidate "Interim Release" before officially releasing a version 1.0 Public Release to the main site. So you may get another update notice in a few days. Once we release 1.0 you can switch over from the Interim Release train to the Public Release one if you want to get updated versions less frequently; all you'll need to do is install a Public Release into the same directory in which you currently have PeerBlock installed and everything will work just fine.

What's Changed

I know, I know, there's a LOT of changes going on here, and there's probably no way you're going to read about 'em all. If you're going to just skim through them, you really should at least read the first four, and then you can skip down to the Known Issues section. I'll cry a little on the inside since I spent all this time writing up this big ol' changelist, but that's fine, I understand...

Here's what's different between the last Interim Release (r131) and this one:
  • Signed Driver!! - We're now signing pbfilter.sys, peerblock.exe, and the installer-package itself. So those of you running on 64-bit Vista/Win7 systems should no longer need to test-sign the driver or hit F8 while rebooting or anything. (Woo-hoo!!) For people running on Vista/Win7 with UAC enabled, instead of having it popup a "scary" yellow warning-prompt asking if you want to run peerblock (or the installer) it should instead show a nice calming blue box as well. Ahhh, isn't it nice?
  • Display Warning if PG2 is Running - We'll now display a warning message if PG2 is detected running, instead of merely attempting to bring up its UI if we detect it. Side-effects of this change include us considering older versions of PeerBlock as PG2, and the Installer not noticing if older versions of PeerBlock are running when you try to install this one.
  • Default "Show Allowed" to False - On fresh installs, the "Show allowed connections" option will default to false. To keep people from thinking that PeerBlock isn't working if they don't see it doing anything, We're now automatically logging the first 9 or 10 Allowed packets regardless of your ShowAllowed setting, and after that logging a message explaining why we've stopped blocking them (presuming you have ShowAllowed set to false that is, of course).
  • Migrate Lists to IBlocklist Lists - We'll check your list of lists to see if you have any old list URLs in there. If so we'll switch them over to hosted URLs instead, and remove the "Gov" list if you had it set.
  • Run As Admin on 32-bit Vista/Win7 - We apparently accidentally removed the "requires admin" stuff from the 32-bit Vista/Win7 version at some point, probably back around r5. It should now automatically run as Admin, popping up a UAC prompt if you have UAC enabled, without you needing to set that Compatibility setting on peerblock.exe
  • Updated List Manager UI - Updated the "List Manager" window, to make it easier to find the list of lists that the Startup Wizard originally presented to you.
  • Startup Wizard Cleanup - Realigned things a bit so that this window layout is a bit cleaner.
  • Auto-Update now Works - Previously, auto-update wouldn't end up generating the list cache, so none of the list updates it would automagically download for you actually ended up being used until you manually updated.
  • Fixed Hang while Enabling Blocking - There was an occasional hang some people had encountered, which would cause PeerBlock to become unresponsive e.g. to mouse clicks. This would sometimes occur during times of heavy stress (i.e. lots of network traffic going on), and could be manually caused by clicking the Enable/Disable button too quickly after list-update, or enablig/disabling PeerBlock while a list-update was underway.
  • Tray Icon Issues - If you ticked and then unticked the "Always hide tray icon" option in Settings, right-clicking on the tray icon would do nothing. The same thing would happen if explorer.exe crashed and restarted (e.g. by you restarting it via the Task Manager). Both of these problems seem to be resolved now.
  • "Save" Button on Settings Panel - The Settings panel now has a Save button on the bottom left of it. Clicking this button will immediately write your config out to peerblock.conf, instead of you having to wait for a successful close of the program. PeerBlock will still save your settings when it successfully terminates - this button is really just to make people feel better, and to save your settings in case PeerBlock crashes.
  • XP UI Issue - Fixed the UI so that on XP the "URL List" dropdown on the Add List window (from the List Manager) isn't "squashed".
  • Improved Error Reporting for Failed List Updates - We now display more information in the Updates window if you encounter a problem while downloading a list update; not just the generic "Error contacting url" message.
  • Verify Downloaded Lists Before Using - After downloading a list-update, we will now verify that we can open and parse that file before overwriting the old one. Basically so long as we can find at least one range in it, we'll assume it's good.
  • Archive History Every N Days - The history-archiving stuff should now work as it should, archiving and/or deleting every N days as you've specified (instead of every 10 minutes, regardless of your timeframe).
  • Possible Fix for Crash on Install - A few people have reported OS crashes on their first PeerBlock run after installation. Originally I thought they were just random crashes, but the stack traces in the dumps are all very similar (though not specifically pointing a finger of blame at anyplace in pbfilter.sys). After noticing that one recent reporter of the bug was running PG2 beforehand, I'm theorizing that the problem may be caused by Windows experiencing conflicts because the PG2 driver never finished cleaning up after itself, and we are loading with some of the same identifiers. Hopefully this change will differentiate ourselves enough that we won't be taken out by the lingering effects of PG2.
  • New Installer Image - We changed the picture that is displayed on the first page of the Installer. If you're wondering about the design inspiration behind the image, it was apparently "a drop of PeerGuardian in every download". =;)
  • Installer Removes Shortcuts if Not Specified - When you install PeerBlock on top of a pre-existing installation, if you unselect e.g. the "Add Desktop Icon" option it will delete those files for you.
  • Installer Copies PG2 Lists - If you elect to transfer your old PG2 settings over to PeerBlock during a fresh install, the Installer should now transfer over your permallow and permblocks list, along with any custom lists you've created (so long as you stored them as .p2p files in the PeerGuardian or PeerGuardian\lists directories, at least...).
  • Don't Update Twice after Install - After you first install PeerBlock (i.e. not upgrading a previous release), we used to update our lists and regenerate the list-cache. And then we'd start PeerBlock, and update our lists and regenerate the list-cache. That was just silly.

Known Issues

The issue we're currently most concerned with is Issue 101, a problem with PeerBlock sometimes not exiting if you are running MS Outlook or the MS Live Mail desktop client. If you are running one of those two programs, I strongly recommend that you read the aforementioned bug, and check your current version of PeerBlock to see if the problem exists there. Not sure whether this bug was introduced recently or if it's a long-standing one, but the discovery of this issue yesterday is the reason we waited another day before releasing this Interim Release. Since it doesn't appear to show up on everyone's machines, even if they're running one of the aforementioned tools - including mine, which makes it more difficult to debug - we decided we're okay for now though we do want to resolve this prior to releasing 1.0.

Other than that, since the Installer for this version will not detect whether a pre-r162 PeerBlock is running or not, it is important that you make sure that PeerBlock is not running before installing this one. We needed to make this break at some point, and decided it's better to do it sooner rather than later.

Also please note that we're now displaying the first 9 or 10 allowed packets even if you have the "Show allowed connections" setting disabled. Especially since we're now defaulting this setting to disabled on new installs, we felt it was important to log something so that people (especially new users) don't end up with the mistaken impression that PeerBlock isn't working.

There is still an extremely rare bug that can cause PeerBlock to crash while it's downloading list updates, Issue 24. We'd patched around this a long time ago, but a very few people have seen it show up very rarely. There is an additional workaround possible, but it's going to require a nontrivial rework of our list-downloading code . . . and since this bug has only been seen very rarely, we don't want the cure to be worse than the disease. If you've seen this crash, please let us know - if it's more common than we currently believe we may change our opinion as to whether we should implement the new workaround before or after 1.0!

Get it Here

PeerBlock r162 Installer - This is the recommended download for most users.

PeerBlock "Portable" Packages:

Time to Pass the Hat...

Unfortunately, the paperwork required to get us registered as a company - which was required in order to get the signed driver - has ended up costing a bit more than originally anticipated. As of right now, I'm actually out over a hundred bucks from my own pocket. If you find this version of PeerBlock useful, I would greatly appreciate any donation you can spare to help defray those costs. And even over and above that I'd still love to build up a "war chest" for PeerBlock, such that we could rent a nice server on which we could build a "real" online-update functionality. And in just under 12 months from now we'll need to purchase another code-signing certificate. Your contributions will definitely not be going into a black hole...

If you can spare something to help support us, just click the above Donate button - it will be greatly appreciated. If not, I understand - it's a tough economy nowadays.

Update: Thanks to your generous donations, we're actually back in the black! We've currently (9/22/09) raised $845 versus the $817 worth of expenses incurred to-date. We're still collecting donations for that nice VPS server and for next year's code-signing certificate, but I just wanted to let y'all know how much you rock. THANK YOU!!

...and now, Enjoy!

Other than that, I hope this version runs as stably for you as it has been running for those of us on the Dev and Test teams! If not, please make sure to let us know: you can comment here on this blog post, add an issue to our Issue Tracker, bring it up on our Forums, or even just send me a piece of email. (You can send some feedback even if everything is working just well for you, we won't turn down a little bit of praise now and then...!)

Expect another Interim Release to be posted in a few days. This will either be a second Release Candidate, or else a "Release To Manufacturing (RTM)" version to make sure y'all are on par with the official Public Release. Oh and I promise this version wasn't accidentally created as a Test Release, unlike our previous release. I'm still very sorry for that one...

Once again, my gratitude and appreciation to the other members of the Dev Team: night_stalker_z, DarC, and XhmikosR; and also to all the members of our Beta Team who've spent a lot of time banging away at this stuff - even more so over the course of the past few weeks than ever before. And most especially to all the people who've contributed to our cause over the course of the past few months, who've made this signed-driver a reality!

And thanks to you for following along with us...

        ---  Mark  ---

Wednesday, September 2, 2009

PeerBlock r131 Interim Release

Quite a few changes have gone in to the code since our release of the r93 Interim Release two weeks ago, and since we're rapidly closing in on our signed-driver-containing PeerBlock 1.0 release (I hope) it's about time to release a new Interim Release. With any luck, this will be the last Interim Release before our PeerBlock 1.0 Release Candidate Interim Release.

Please remember that while we've tried to ensure that this release is stable, it is still an Interim Release - and as such has not gotten as much testing as our Public Releases (like PeerBlock 0.9.2 (r86)) have. It is really meant for people who are more interested in staying on the "Bleeding Edge" of PeerBlock development, and are willing to test out new features and bugfixes for us before we bundle these up and package them as Official Releases. If you're using this version our hope is that you will report any bugs found to our Issue Tracker, and/or discuss them in our Forums - your contributions to this test effort help us make progress, and help ensure that the Public Releases are as stable as they can be!

And also don't forget that if you're running an Interim Release, that version of PeerBlock will check for new Interim Releases and direct you to come here to the Dev Blog when a new one is found. (Actually, this is the first release that should trigger that update-notification, so if it did in fact work please let us know!) New Public Releases will only check for new Public Releases, directing people to a page on our main site. We release Interim Releases much more frequently than we do Public Releases, so if you find having to update your software every couple of weeks annoying you'd probably be better off running a Public Release instead.

What's Changed

Here's what's different between the last Interim Release (r93) and this one:
  • Archive/Delete PeerBlock.log - We now handle peerblock.log the same way as we handle history.db. If you have it set to "Archive & Remove" or "Remove" history every N days, peerblock.log will be archived (and/or deleted) the way you'd expect.
  • Don't Overwrite Tracelog - One problem we've run into a lot is the availability of the peerblock.log tracelog file. Because previous versions overwrote this file every time PeerBlock started we'd lose a lot of helpful data from previous runs, and this has made troubleshooting more difficult. I'd strongly recommend setting the "Delete history every X days" option (specifying an "X" value of not too often, maybe a week or so, just to make sure logfiles are available when we need them), or maybe "Archive and remove" if you want to keep them around longer and are willing to zip/delete them every so often. In the future I'll change the default options on new install to probably "Delete history every 7 days", but for now you'll need to do it manually.
  • Installer Rewrite - Our newest team member, XhmikosR, has rewritten nearly the entire installer code we'd been using. It's doing things in a much more professional manner now. It asks if you'd like to use your old PG2 settings (upon new installation only, and even then only if PG2 is detected on your machine), makes use of an updated Start Menu hierarchy, uninstall now also removes the ...\lists files in a better manner and removes your ...\archives files/directory as well, no longer offers to install QuickLaunch shortcuts on Win7 where they're not really used by default. Also, we're now using a more-standard PeerBlock icon on most pages of the Installer, in the upper-right corner - should look a bit cleaner.
  • Driver Load Bugfixes - We've fixed a few problems in the driver loading code, of the sort that sometimes lead to "unable to load the packet filtering driver" type errors during PeerBlock startup. Specifically, these include fixes for the "CreateService error 1072, 'service has been marked for deletion'", and "StartService error 1055, 'the service database is locked'".
  • Cleaner Shutdown - PeerBlock now saves its configuration as the first step of its shutdown code, which should help resolve the problem people have been having with their settings appearing to not persist across a reboot. It also should shutdown more quickly, so Windows shouldn't display the "waiting for a program to terminate" type dialog when you reboot while PeerBlock is running.
  • Start with Windows - Prior to this release, PeerBlock stored its "Start with Windows" setting in the registry under "HKCU\Software\Microsoft\Windows\CurrentVersion\Run", in a key called "PeerGuardian". This should now be in a key called "PeerBlock", as it should - the installer will fix this setting if an incorrect registry key (i.e. a "PeerGuardian" key with a value pointing towards a PeerBlock installation) is found.
  • Updated Database Code - We've updated our database code to use sqlite version 3.6.17. Supposedly some performance improvements (and bugfixes) are in there, so this should be a source of generic goodness even though we may not notice much.
  • Extra Tracelog Messages - To assist in our troubleshooting of problems, additional statements are being logged to peerblock.log in the following areas: list updating, startup, shutdown, driver load, file-handling.
  • Changed "Hide Window on Close" Option - This option was confusingly worded in the settings panel, so has been renamed to "Minimize to tray on close". Hopefully this will make it more obvious that if the option is NOT set, closing the main UI window will stop the program.
  • "Log Allowed & Blocked" UI Bug - On WinXP 32-bit, fixed the problem in which the "Log Allowed & Blocked" listbox was way too short and had "spinner arrows" to select your option. Just a minor issue, but it didn't look very professional.
  • Mention "PeerBlock, LLC" - Now that we have an officially registered company to represent our project (this was needed for driver-signing, and is probably a source of goodness even aside from that), all app copyrights and company name type fields should be updated to use this name.
  • "Portable" Version - We seem to have quite a few users who like using PeerBlock in a "Portable" mode. PeerBlock currently should be able to run just fine off a USB stick (et al), but we have not previously made zip-packages available as a download option; you'd need to install it first, then copy all the files from the PeerBlock install directory over to your USB stick, then uninstall PeerBlock from your machine. Starting with this Interim Release however, we will be also releasing packages in .zip format. Just be aware that you'll need to figure out on your own which one to download, as you'll need to run a different version for W2K/XP versus Vista/Win7, and for 32- versus 64-bit . . . for a total of four different options.

Known Issues

We still haven't fixed an issue in that automatic list-updates may not be correctly working if you have the "Auto-close Update Window" setting enabled. We're still looking into it, but for now I recommend either not enabling this option, or else manually clicking the "Update" button every so often. This is Issue 56 if you'd like to follow progress on this one.

Also, as previously mentioned, since we're no longer overwriting peerblock.log every time PeerBlock starts we strongly recommend that you enable the "Delete history every X days" option in the settings panel, choosing a reasonable option like once a week or so.

Get it Here

PeerBlock r131 Installer - This is the recommended download for most users.

PeerBlock "Portable" Packages:


Like I said, hopefully this will be the last Interim Release before our signed-driver-containing PeerBlock 1.0 Release Candidate Interim Release. If you encounter any bugs in this release please let us know! And don't forget to "star" the bugs which matter most to you, as per the recent Tell Us What to Do blog post.

Many thanks to the other members of the Dev Team: night_stalker_z, DarC, and XhmikosR; and also to all the members of our Beta Team who've spent a lot of time testing relatively unstable versions of PeerBlock to make sure this is a pretty stable Interim Release for you!

Thanks, and I hope to deliver some good news on the signed-driver soon...

        ---  Mark  ---

Monday, August 31, 2009

Conficker Detector

I received an interesting piece of feedback over the weekend. A user wanted to let us know that even though he had AVG installed as an antivirus, and runs Spybot (Search & Destroy, presumably), PeerBlock was the only tool that detected that his machine was infected with the Conficker worm!

I'm not sure which list(s) he was using, and we probably only caught it because PeerBlock is a new enough project that the worm creators didn't put in anything to check if we were running (and torch us if so), but that's just neat, and I thought it worth sharing.

Anyone else find any unexpected uses of running an IP-blocker like PeerBlock or PG2?

        ---  Mark  ---

Friday, August 28, 2009

Tell Us What to Do

We try to use our Issue Tracker to manage our "To-do List" for PeerBlock. All bugs we find get added to the list, whether we run into them ourselves, or someone reports them to us either using the Issue Tracker itself or via email or a forum-post, or sometimes even if we notice someone complaining somewhere about something that's always bugged them with PG2. When we're trying to figure out what to work on next, we go through this list and try to pick out the most useful bug out of them all. (Well, okay, I admin it, sometimes we instead pick out the "low hanging fruit", the easiest ones to fix, just because we can get a quick rush out of fixing something that easily...)

One of the fields in those Issues that is very helpful to this effort is the "Starred" field. You can "star" an Issue to have the system email you updates whenever that issue is updated - when we start working on it, if we need additional info from people hitting it, if we have a potential fix we need some help testing, when the bug's actually fixed, etc. And from our perspective, issues with more stars are more likely to get attention first, since we assume that more people care about them.

Now, we won't always work on the most popular bugs first, but this is an important metric we use to decide what we should spend our time on. Especially now since we're gearing up for a PeerBlock 1.0 release, and are trying to ensure that the most important bugs are resolved before that point.

This is where you can help!

Please take a look at our Issue Tracker, and if you see anything you'd like to see fixed sooner rather than later, put a star on it!

Yes, this will require having a Google Account - but we all have one of those anyway, for "junk mail" purposes if nothing else, right? And yes this may take a few minutes of your time - but isn't helping make PeerBlock the best it can be worth it?

So please, take a few minutes and tell us what to do!

...and in other news

In case you haven't been following along in our Forums, we're very close now to getting our grubby paws on that elusive Signed Driver. The NY Department of State has finally finished up the paperwork, and "PeerBlock, LLC" is now an official entity. Armed with our new company registration - and $230 worth of your donations - we have filled out the online "paperwork" to get a code-signing certificate from GlobalSign.

At this point we're simply waiting for them to verify that we do in fact exist as a company, and we should then receive our code-signing certificate. I'm hoping that shouldn't take too long, would (optimistically?) hope that should take less than a week. Once we receive that code-signing certificate, I'm hoping to have an official PeerBlock 1.0 Public Release ready to go within a week . . . with an Interim Release coming here to the Dev Blog a few days beforehand.

Thanks for staying interested in PeerBlock, and I hope to hear from you soon!

        ---  Mark  ---

Wednesday, August 19, 2009

PeerBlock r93 Interim Release

A fair amount of development has gone on since the release of PeerBlock 0.9.1 (and the follow-on bugfix release 0.9.2). While these changes have been pretty well-tested by our Beta Team, I wanted to share a wrapup of of them with a slightly wider community. So I'm releasing this new Interim Release, r93.

Please note that this release is not necessarily entirely stable! It is labelled an "Interim Release" for a reason, that reason being that we haven't spent as much time ensuring that it's stable as we generally do with the Public Releases released on the main website. However if you'd like to stay on the "bleeding edge" of PeerBlock development, this is the release you're going to want to check out.

What's Changed

As compared with the latest available PeerBlock Release, here's what's new:
  • Checks for Updates - Public Releases from 0.9.2 on will always check for new Public Releases, and Interim Releases like this one will now check for new Interim Releases (redirecting here to the Dev Blog main page if one is found). (Issue #7, #46)

  • Smaller History.db - When archiving/deleting history file, perform an SQL "vacuum" operation on history.db to cause it to shrink in size. This means that your history.db should generally be much smaller than it might have been previously, so long as you have the "History" section on page 1 of the Settings panel set to "Archive and Remove". (Issue #29)

  • Permanent Blocks list now actually Blocks - Prior to this fix, this list defaulted to Allow; you needed to manually reset it to Block after adding something to it. (Issue #27)

  • Auto-Close Update Window - For new installations (i.e. where no .conf file is found, and it runs you through the Startup Wizard) we default to auto-closing the Update Window after 10 seconds. (Issue #34)

  • Fixed FwpmCalloutAdd0 Error and Crash - Rare bug and accompanying OS crash; fixed in 0.9.2 as well. (Issue #33)

  • XP Pro x64 Detection - Previously, the program would detect XP Pro x64 as Windows Server 2003 x64, and log it as such to peerblock.log. (Issue #31)

  • iBlocklist Lists - Switched P2P, Ads, and Spy lists from PeerGuardian-hosted ones to the iBlocklist-hosted variants; removed Gov list as it was long ago merged into P2P. Note that this will not update your pre-existing blocklists, only if you run through the Startup Wizard (e.g. first run after clean install) or add new lists via the List Manager. (Issue #30)

  • Exception Logging - We now should be logging information on all exceptions to peerblock.log. (Issue #39)

  • Log Timestamps - Peerblock.log now includes date/time-stamps. This should help us track down performance issues, and figure out what was going on closer to the time of failure when troubleshooting. (Issue #39)

  • FwpmEngineOpen0 Messagebox - If the "Base Filtering Engine" isn't set to Automatic (and running), we used to get a very obtuse error message before PeerBlock terminated. We're now trapping this error, and displaying a much more user-friendly message I think. (Issue #25)

Known Issues

The primary issue I'm concerned with is that the automatic list-updates feature doesn't appear to be working as you'd expect it to right now, I think only if you're running with "Auto-close Update Window" on though. I believe this is a "day one" bug we inherited from the old PG2 code, which is why I'm letting this one out the door. So make sure that you manually-update lists every so often. Will be working on a fix for this soon, don't you worry.

Get it Here

PeerBlock r93 Installer


That's it for now. Like I said I wanted to get something out to y'all, since I think there's some goodness in there. And it's been a little while now since we last released anything publicly, and I know that many of you like getting releases relatively often. With this release you should be able to stay on the Interim Release train as well, since as I said it will automatically check for updates and direct you here if a new version is found.

And of course, if you find any bugs in this or any other version of PeerBlock, let us know! You can report them on our Issue Tracker over at Google Code, or via email, or at our new Forums.


        ---  Mark  ---

Monday, August 17, 2009

PeerBlock Forums!

We've been working on setting up some forums for a little while now, especially so after the PG2 site went down a couple weekends back. We're happy to announce that they're live now!

We are still ironing some of the kinks out, so expect to see a few funky things for awhile yet. Strange outages as we update things, features appearing/disappearing almost at random as we enable/disable them, etc. And the default forum template we're using is, um, well, nothing like any of our other sites. But it's clean and perfectly serviceable for now, and should serve us well until we get a chance to create a Grand Unified Look & Feel (tm) for our sites, program, installer, etc.

So come on over to our new PeerBlock Forums, register an account, and talk about any problems you've encountered or suggestions you have!

        ---  Mark  ---

P.S. Thanks to ss18 for working like a madman to set this all up, and to LANsquared for graciously donating server space and bandwidth for it!

Tuesday, August 11, 2009

Out of Town

I'm out-of-state this week, up in Massachusetts for work. And while I brought my laptop to hopefully get some more work done on PeerBlock in the evenings, the place where I'm staying does not have internet access so expect me to be much less-easily contactable until this weekend.

Just thought I'd let y'all know, in case you're wondering why I'm not being my usual chatty self...

        --- Mark ---

Sunday, August 9, 2009

Updating to iBlocklist Lists

Update: It now (9:00 PM EST on 8/9/09) appears as though the servers are back online. The fact remains: the Peer Guardian list servers are notoriously unreliable, and I still strongly recommend that people update their PeerBlock configuration to switch over to the lists outlined in this post.

As of right now (5:06 PM EST on 8/9/09) the servers belonging to Phoenix Labs appear to be down - or at least extremely slow to respond - and have apparently been so for most of the weekend thus far. Since PeerBlock still defaults to using the old PeerGuardian lists hosted by Phoenix Labs, this means that PeerBlock may not be able to update its lists. Even worse - especially since so many people have been downloading PeerBlock this weekend - this means that PeerBlock may not be able to download any lists when you first install it!

Because of this, I strongly recommend that you update your list URLs to point to the blocklists maintained by These include the same "Bluetack" blocklists that PeerBlock/PG2 use, along with many (many) others. Many people on the PG2 forums have been using iBlocklist lists for quite awhile now, and everybody seems extremely pleased with them. In fact, PeerBlock will be switching over to them by default starting with our next release. The servers seem to be much faster than the Phoenix Labs ones, and are much more reliable. And they're run by "Fakhir", a member of the Phoenix Labs crew, so are even from a reputable source. I'm sure you'll like them.

How to Switch

It's actually pretty easy to switch over to using iBlocklist lists!
  1. Open List Manager - Open the main PeerBlock UI, and click on the "List Manager" button.
  2. Edit Entries - For each "" URL in your list of lists, either double-click on the list's row or highlight it and click the "Edit" button.
  3. Enter New URL - In the "URL" field, cut-and-paste the new URL you want to use from the iBlocklist list. Then click "OK".
That's it! After closing the List Manager window, PeerBlock should automatically download the updated blocklists and re-generate the list cache. After that, everything should just work!

Or, if you're more of a "visual learner", iBlocklist has a video tutorial of this available.

Which List to Use?

The only remotely confusing part of this whole process may be selecting which of the iBlocklist lists you should use. The trick is that the original PeerGuardian renamed some of these lists to make them more meaningful, and PeerBlock has so far kept that renaming.

Here's the mapping of which iBlocklist list to use to replace each PeerGuardian one:
  • PeerGuardian Name (PeerGuardian URL): iBlocklist Name (iBlocklist URL)
  • Ads ( Ads, from Bluetack (
  • Educational ( Edu, from Bluetack (
  • Government ( this list actually doesn't exist anymore; its contents have since been merged into the "P2P" list. Remove this list from the List Manager window by clicking once on it to highlight it, then clicking the "Remove" button.
  • P2P ( level1, from Bluetack (
  • Spyware ( spyware, from Bluetack (
They also have many other lists available over there at iBlocklist, I strongly recommend checking them out.

Hope That Helps!

That's all there is to it, really. Like I said I strongly recommend migrating your lists away from the Phoenix Labs hosted ones at this point. Not sure why their servers are down/slow right now, but since their list-servers have been notoriously problematic over the past few years this is probably a good idea regardless.

And as always, if you have any questions or concerns - about this or anything else PeerBlock related - please feel free to comment here or to send me an email!

        ---  Mark  ---

Tuesday, August 4, 2009

Branches and Versions

A new public release will be coming tonight, to fix a Windows-crash reported by a few people. This "bugfix release" is going to be kind of a new thing for us, so I wanted to take a moment to explain how we're handling these bugfix releases and how it affects versioning.

In case you missed the earlier post on PeerBlock Versioning, the "R Number" of a release isn't actually a release number - it's the revision number of the source-code used to build that release. These numbers are used by the source-control system we in the dev team use to coordinate our efforts, and are incremented each time we a change is "committed". So this revision number identifies the exact state of the source-code at the time a release was built, and makes it easy for us to find the version of code to look at when troubleshooting problems with released versions.

Historically, each PeerBlock release has contained every change committed to the source-control tree, so r52 included every change since r33, and r71 included every change since r52. This is about to change.


For this upcoming bugfix release, we're in an interesting position. We have a fix that we want to get out to the public because it fixes a critical problem, but we don't want to release all the changes we've made since r71 because they haven't been tested enough yet and may introduce yet more bugs. So what do we do? We "branch" the code.

Imagine that the program's source-code is like a tree. We initially start out with one continuous stream of changes - this forms the trunk of the tree as we move up. At some point though, we reach a point where we want to have two different sets of source-code changes. The code now branches off in another direction so that we have two versions of the code both "current" at any given time, the "trunk" and the "branch".

That's what we'll be doing here. The Trunk version of code is where all the latest-and-greatest (and potentially unstable) changes are going. The "0.9.x Bugfix Branch" is where we'll be putting only the code we absolutely need to fix bugs in the 0.9.1 release, like this one.

With me so far?


Now most people are familiar with progam versions, so when you see PeerBlock 0.9.2 coming out tonight you'll know that obviously comes after the 0.9.1 that you're running. And when PeerBlock 1.0 comes out later on, you'll know that is a later release than 0.9.2.

The problem comes in with these "R Numbers" though. Remember, they tell us the specific version of the code used to build a particular release. The problem is, they're shared amongst all branches in our source-code "tree" - this means that if we make a change in the "trunk", our rev is incremented. If we then make a dozen more changes to the trunk, our rev is incremented a dozen more times. If we then make a change in the "0.9.x branch", our rev is incremented again.

So What Does This Mean To Me?

What this all boils down to is that our new shiny PeerBlock 0.9.2 release will have an "R Number" of probably r86 or so. And even though this number is way bigger than the r71 of PeerBlock 0.9.1, it doesn't actually include many of those 14 changes that went in, because it came from a different branch.

Going forward, it also means that one given R Number does not necessarily have more stuff in it than a lower R Number. For example, let's pretend we released a r81 Interim Release. This release would have been built from trunk, and would have contained a whole lot of new features. We then came out with v0.9.1 (r86), built from the 0.9.x branch. r86 is a bigger number than r81, but r81 actually is the "newest" build, since it has more new features built into it.

So don't trust the R Numbers anymore. Think of them as a name, and that's about it.

        --- Mark ---

Saturday, August 1, 2009

Auto-close Update Window by Default (r75)

Another thing that's always annoyed me about PG2 was that by default the Update window stays open until you click the Close button. For the most part I don't care that it's checking for updates, or that it just downloaded a new version of my block-lists . . . that's what I expect it to do. Just do it already!

This is exceptionally annoying on startup, as the program will not actually start blocking anything until you dismiss the window.

It's trivial to fix this problem on your own, but I don't think you should need to fix this at all. And it annoys new users, those who are least likely to know how to resolve it, so I've decided to change the default to be to auto-close that window after a 10 second delay. This change will only affect new installations, when the "startup wizard" is first run (or if no peerblock.conf file is found), so if you already have things changed to some other settings you won't be affected at all.

Technical Details

An embarrassingly simple change, really, only two characters in length. Updated the configuration class's initialization-list, which is what holds the default config for if that setting isn't found in peerblock.conf (or of course if that .conf file doesn't exist). If the UpdateCountdown value is less than 0 the program will leave the Update window open until you click the Close button; otherwise that's the number of seconds we'll wait until the window closes.

Permanent Blocks List Actually Blocks (r74)

Another of the nagging problems with PG2 has always been that when you first add an ip-address to your "Permanent Blocks" list, for example right-clicking on an ip-address in the main UI and selecting "Block (ip) permanently", the permblocks.p2b list the program creates ends up being created as being an "Allows" type list. Easy to fix - you just have to edit that list and set it to a Blocks type - but this has always annoyed new users of the program.

Thanks to a patch from night_stalker_z, this problem has now been fixed!

With the r74 commit, PeerBlock now correctly creates the Permanent Blocks list as type Blocks. So hopefully nobody should complain about that one anymore, once we release our next version.

Technical Details

Not much to speak of here really, just a simple "oops" on the part of the original PeerGuardian coders.

Smaller History.db (r73)

There's been a longstanding issue with the "archive and delete history" functionality. While it does (if configured to do so) save aside a text-dump copy of the history as it should, the history.db file never actually shrinks in size! In theory it shouldn't necessarily grow too much either as it should be making use of all that pre-allocated space, it still bothers some people (including me).

With the r73 commit, this problem has been fixed. As part of its "delete" processing, PeerBlock now compacts the database file, removing all that pre-allocated space.

Technical Details

Turns out that sqlite3 - which we're using to handle our cache.db and history.db information - has a "quirk" in it such that when you delete rows from database tables it doesn't actually remove the memory/filespace allocated to them. It adds them to a free-list, but still keeps them lying around.

For more details on this, see section 9.1 of the SQLite Optimization FAQ.

This is probably efficient for certain operations, but it does leave this file unnecessarily large sometimes. For example if you're logging a whole lot of traffic on one day, but then don't do that again for a month or so (or ever!), the database file will forevermore be big enough to store that one crazy day's worth of traffic. Seems like a waste to me.

What you need to do in order to actually shrink the database is perform a "vacuum" command. This will release all those empty data structures on the free-list, so that the file will shrink a bit.

Now looking at the code for r73, you'll see that I'm performing the delete, then a commit, then the vacuum. I'm not entirely sure how the sqlite3x wrapper we use works (I looked into it a bit, but since I was able to get my code working didn't bother spending the time to fully grok it), but it appears as though once a commit is made you can't make any more commits. Trying to "stack" the delete and vacuum commands into one commit threw an exception. So this is the only way I could find to get it to work. I guess vacuum doesn't require a commit?

Thursday, July 30, 2009

Program Updating (r72)

Now that we're out of our 0.9.1 "stabilization mode" coding, it's time to start working on some more interesting things.

First up is the resurrection of the "Program Update" code. Updated the URLs to point to a PeerBlock-specific website, uploaded my own latest-update-checking script, and BOOM . . . nothing. Well, that's not entirely accurate - the program's updating the "Updating" UI to change the status to say "Update available, see (url)". The thing is, the program's supposed to pop up a window and tell you to download a new version, loading up the website in your browser for you if you choose to do so. Doesn't look like this code was working even in the PeerGuardian base code, but then again since the PeerGuardian update URL says the latest official version was built in 2005, I suppose nobody would really remember all that well whether it worked or didn't.

Either way, it's working now! PeerBlock will now check for updates, and will actually let you know if a new version is available. And it will pop up that window asking you if you'd like to be taken there. And it will take you there if you so choose.

Not as slick as an automatic update routine that does everything under the covers for you, but it should suffice for now. Speaking of which, I need to add an Enhancement Request to our issue-tracker to track that idea for future implementation...

Technical Details

The diffs are actually relatively straightforward, and the tracelog routines sprinkled throughout should help let you know what's going on in each section.

That said, there are a few hairy bits...

The way it works is the program stores a date-string for when it was compiled, sticks a number on the front of it to identify build-type, and calls this the BUILDSTR. We then open the URL for a PHP-based update-script, and pass it this BUILDSTR. The update-script then returns a string (in the same format), identifying the latest release for that build-type. PeerBlock then checks to see if the returned latest-version is greater than its BUILDSTR number, and if so gets ready to perform the update operation.

I updated this a bit to add a build-version to the end of it, and ended up needing to update a few key variables to type "unsigned long long" as a result - those numbers are getting awfully big! Also note that we should probably reduce the build-type #defines by a factor of 10 once 2010 rolls around; they're only so high because otherwise STRINGIFY ends up stripping the leading 0.

And for what it's worth, we never seem to real the else clause that starts on line 638 in updatelists.cpp. This is why the updatepg was never being set, which caused the "Update available, would you like to go there?" window to never be displayed.

Tuesday, July 28, 2009

PeerBlock r70 Interim Release

Okay guys, ONE MORE TIME... Here's what will hopefully be the final Interim Release before releasing PeerBlock 0.9.1.

What's Changed

Since the r65 Interim Release we believe we've resolved the "crash during update lists" problem that was occurring in the third-party code we're using to download lists. {Bug#24} We've also fixed some of the code that can lead up to a very rare "CreateService error 122" problem to actually tell us the real error code. {Bug#26} "Update at Startup" is now mandatory, to help workaround Bug#22. - you can set it to whatever you want in the .conf file, but it won't change anything (and is disabled within the settings).

Things to Test

I'm not too worried about specifically testing much for this release. If you can find a way to reproduce the Bug#26 problem and send me peerblock.log and a screenshot of the error-text, that would be great. Other than that I think we're in good shape; if we can get through 24 hours without anybody reporting any severe problems I think I'll call it good enough for Public Release.

Get it Here

PeerBlock r70 Installer


Thank you for continuing to help with this testing. If at all possible please send me some feedback within the next 24 hours or so, even just to say that everything's working like a charm (which it hopefully will!).

        --- Mark ---

Saturday, July 25, 2009

PeerBlock r65 Interim Release

The next Interim Release of PeerBlock - r65 - is now ready. My intent for this one is to give it a quick "sanity test" cycle, and if no serious issues are found to then release this as a Public Release (after bumping up the rev-number to remove the "Internal Testing Release" designation).

What's Changed

Here's the list of what's different since the last Interim Release, r61:

DisCoStu has updated the installer to fix all the reported installer issues. This should resolve the first five items on the "Known Issues" list for r61. Removed the "Uninstall PG2" option, since the PG2 installer will complain if PeerBlock is running at the same time . . . and since we can now successfully run PeerBlock after install, it should be.

The tracelogging functionality was implicated in the majority of the crashes that have been seen recently. I believe I've resolved those issues now.

The one unresolved crash I've seen occurred in the "UpdateProgress" routine called while we're updating lists. I've added some additional tracelogging code in here to help track where in the process it's dying. This can significantly bloat the peerblock.log file (my install grows up to 60-70kb for a single update of just the p2p list!), but even at that it shouldn't grow too large too quickly, and it zips up very well so sending me those logfiles shouldn't be too much of a burden. That said, for this release at least please make sure you're running at TraceLog Level=5 in peerblock.conf, and make sure you zip up those .log and .dmp files prior to sending them to me!

Things to Test

As always, I have a list of some things I'd like for us all to make sure we test with this release. Before testing out the installer-changes, make sure you save aside a copy of your peerblock.conf file and any custom lists you've generated, so you don't lose them!
  1. Installer, Upgrade - Revert to a base r52 install (running the r61/r65 uninstaller, then manually cleaning out the install-directory, then install r52 back on your system. Make a configuration-file change (say, changing the color of logged entries or something). After this, run the r65 installer to upgrade the installation. Verify that the program is working correctly, that your pg2.conf file did NOT get overwritten (e.g. that the color of your logged entries remains how you set it up in your temporary install of r52), and (after exitting PeerBlock) that peerblock.conf contains the TraceLog section with Enabled=yes and Level=5. Again, this is how a large part of our user base will be introduced to r65 - let's make sure it's a pleasant one.
  2. Installer, Fresh - Uninstall PeerBlock via its uninstaller, then manually clean out the install-directory. Run the r65 installer, make sure everything seems to work, that it's correctly-imported your PG2 .conf file (if PG2 is present and installed in the default directory on your system), and after exiting PeerBlock verify that the .conf file has a TraceLog section with Enabled=yes and Level=5.
  3. Uninstall - Run the PeerBlock uninstaller, and make sure it deleted all the files in its install-dir this time.
  4. Update Lists - This is still a bit of a sore spot, though crashes have become increasingly rare. Try closing down PeerBlock, deleting your lists and/or cache.p2b file (don't do this last one while PeerBlock is running!), and restarting PeerBlock. If you experience any crashes here, again, please zip up those peerblock.log and .dmp files and send them to me ASAP!

Get it Here

PeerBlock r65 Installer


Thanks again for helping test out PeerBlock! Without your help, we probably would have "publicly released" r61, with all the bugs it contained. Thanks to the work you're all putting in, our users will (hopefully) be able to trust that what we publicly release are generally in pretty darn good shape.

        --- Mark ---

Monday, July 20, 2009

PeerBlock r61 Interim Release

We've got another build ready for official test. r61, which will hopefully be publicly released as v0.9.1.61 once y'all put it through its paces. Please don't post this release to the forums yet - I want to make sure we've managed to work out all the crashy bits before we "bless" it.

What's Changed

Since the last Interim Release (r52), here's what's new:

First off, we've got DisCoStu's installer work. The installer-package should have some spiffy custom graphics, install the correct variant of PeerBlock (Vista/Win7 vs. XP, x64 vs x86), automagically copy in the pg2.conf file from your original PG2 installation (if you installed it in the default C:\Program Files directory), and ask if you'd like to uninstall PG2 while you're at it.

I believe nearly all the app-crash causing bugs have been fixed. Primarily, these were crashing during list-updating, and crashing while exiting. If you experience any crashes, save aside your peerblock.log and .dmp files and send them to me ASAP!

I also have created new options in the .conf file to allow you to configure your tracelog functionality. In peerblock.conf, under the "TraceLog" heading you will find two new fields: Enabled and Level. Enabled can be either "yes" or "no" (defaults to yes), and Level can be one of the following values: 0 (disabled), 1 (Critical-severity only), 2 (Critical- or Error- severity only), 3 (Critical, Error, or Warning), 4 (Critical, Error, Warning, Success), 5 (Info, and all other higher-severity fields), 6 (Verbose, and all others), 7 (Debug, and all others). Basically, the higher the number, the more messages you'll see logged to peerblock.log; the default is, I believe, 5. For the initial few rounds of testing, please run it at level 5 or 6, as the extra messages will make it that much easier to figure out what's going on in the case of a problem.

Known Issues

Here are the list of issues that have been reported by various peoples in this release:
  1. Typo in Installer - The installer filename is "PeerBock" instead of "PeerBlock"
  2. Problems Installing if PeerBlock Running - If PeerBlock is currently running when you try to run the installer, it can't overwrite the peerblock.exe and peerblock.log files because they're already in use.
  3. Error Running PeerBlock as Last Step of Installer - The Installer asks you if you want to run PeerBlock after it's installed it, but if you try to it displays an error because PeerBlock requires Administrative Rights to run.
  4. Uninstall Leaves Dangling Files - After you Uninstall the program, it leaves some files left on your harddrive. These leftovers include the lists dir with lists inside, cache.p2b, history.db, peerblock.conf, peerblock.log, and peerblock.dmp (if it exists).
  5. PG2 Config Imported During Upgrade - When you're upgrading your PeerBlock install, if you have PG2 installed on your system the installer will copy PG2's pg2.conf file over top of your PeerBlock's peerblock.conf. This will cause any PeerBlock-specific settings you've updated to be overwritten.
  6. Hang While Updating "P2P" List - Only one reported instance of this, but PeerBlock hung while it was updating the "p2p" list. The user clicked Abort, at which point PeerBlock crashed.
  7. PeerBlock Running in Vista Compat Mode on Win7 - One reported instance of this happening; previous versions may have crashed a few times, causing Windows to automatically run the program in Vista Compatibility Mode.
  8. Crash During High Stress - One user has reported frequent crashes while his machine was performing lots of P2P activity. Early indications are that disabling tracelogging may have resolved this.
  9. Dumps - A couple of other app-crashes have been seen, the peerblock.dmp files generated will be undergoing triage soon.
These problems are all being looked into, and will hopefully be resolved within the next few days. After that we will generate another Interim Release, go through a quick 24-hour Sanity Test cycle, and if no new critical bugs are reported in that time we'll upgrade that to an official Public Release.

Things to Test

If we could all try to run through this list of tests, that would be greatly appreciated.
  1. Installer, Upgrade - If you installed the r52 Installer package that DisCoStu posted to the PG2 Forum, please try running this r61 installer and upgrading your installation. Make sure everything seems to be working, and that the main UI says "PeerBlock r61 - INTERNAL TESTING RELEASE". This is the experience that many of our current users will likely go through, I'd like for us to make sure it's working well for them.
  2. Installer, Fresh - Uninstall any previously-installed version of PeerBlock (even/especially if you've run through Test #1 above), and run the installer as if you're a new user. Verify that it installs where/how you tell it to, and again that the program is running correctly. Make sure that peerblock.log is created in the install-directory. Verify that it copied over the pg2.conf file from your previously existing PG2 install (if you have one), and that it uninstalled PG2 (if you selected it to).
  3. List Updating - Since many people have experienced crashes while attempting to update lists, test this out quite a lot. We do have a couple of patches in place that appear to fix the problem, but I'd like to make sure. Click the "Update Lists" button, make sure the app doesn't crash. Close PeerBlock, delete your list(s), restart PeerBlock and let it redownload the lists, make sure it doesn't crash. Close PeerBlock, delete your cache.db file, restart PeerBlock, make sure it "Generates List Cache" . . . and doesn't crash.
  4. Program Exit - Once again I believe I've nailed down that "app-crash while exiting the program" bug, but would like to make sure. Start PeerBlock up, wait a little while, then right-click on the taskbar icon and exit. Make sure it doesn't pop up one of those windows saying it crashed. Do this a whole bunch of times.
  5. Tracelog Options - Close PeerBlock, update the .conf file to have "Enabled" set to "no", restart PeerBlock, open up peerblock.log in notepad, and make sure that only a few messages (up to the point where it's loading the config-file, basically) are logged. Try different "Level" numbers, make sure you see more/less things logged. (I don't think I have too many "Debug" level tracelog messages, and you hopefully won't see anything logged at Critical/Error level.)

Get it Here

PeerBlock r61 Installer


Once again, thanks to all you guys for helping test these pre-release versions out. Without you guys sending in your error reports, the program definitely wouldn't be as far along as I think it is.

So keep on sending me any problem reports, or even any reports that it's running without problems!

        --- Mark ---

[Edited 7/22/09 to add Known Issues list]

Installer, and Versioning (r53-r55)

I've been a bit lax with making regular updates to this blog, will try and cover the stuff that's transpired of late.

First off, DisCoStu (from the PG2 Forums) was kind enough to offer to help out with updating the code for the PG2 Installer, and get it all set up for PeerBlock use.

A couple of minor nits existed with the initial installer-version released to test (on the PG2 Forums) - like not setting the WorkingDir on the shortcuts the installer created - but these issues were quickly fixed and reposted to the forum-thread, so the version that most people have been using of late should be pretty good as far as that stuff is concerned. It will even offer to copy over your old PG2 config-file if you've installed PG2 in the default "Program Files" directory, and offer to uninstall PG2 for you after you've installed PeerBlock if you're so inclined!

He's also made some spiffy custom graphics for the installer package, so it should look a bit nicer and more professional than it (or the original PG2 one) did previously. And the setup-files should have a rational name, so that you can tell which version is sitting there on your harddrive.


As part of the process of working on the installer, we had to come up with a versioning scheme for PeerBlock.

The "r33", "r52", etc., versions you're all used to seeing are currently based on the source-control revision used to generate that build of the program. This number is incremented every time a change is made ("committed") to the source code, and ends up being very similar to the "Build Number" associated with software like Windows.

The new version numbers for PeerBlock will be more standard, and should show how we're rapidly approaching a release worthy of being called 1.0. At this point, I'm calling the r52 version "leaked" to the forums

The first number (the first 0) will mean the Major Version of the program, and is 0 right now since I consider us still in a Beta mode. It will be increased to 1 once we're at what I'd consider a stable release, and then will someday go to 2 only after extensive architectural changes to the tool. For example if we rewrite PeerBlock to run as a Windows Service instead of a basic app, we'd bump this up to version 2.

The second number (the 9) will be the Minor Release number, and will be incremented whenever new functionality is added to the software. So the official stable release of PeerBlock will be 1.0, then if we add new functionality to, say, allow you to right-click on a blocked entry and run a WhoIs query on it, or start displaying we'd bump up the version number to 1.1. I plan to make sure that these minor releases are extensively tested, so you can feel comfortable running new ones as soon as they're released.

The third number (the second 0) will be a Bugfix Release number. If any bugs are discovered in a Minor Release, the next release containing a fix for these bugs will increment this value; for example since we're currently at v0.9.0, the next release - containing a fix for the "app-crash during update" problem, and hopefully the "app-crash on exit" as well - will be v0.9.1. As time goes on, this will allow us to easily release bugfixes while continuing working on new features, without destabilizing publicly released versions with buggy new functionality.

The fourth and final number (the 52 in will remain as the source-code rev; essentially the build-number of the program. This will make it easier to identify the source-code that goes with a particular release, for bugfixing purposes.

Technical Details

Google Code commit r53 contained DisCoStu's initial update of the installer code. Commit r54 was me updating the version-numbers; and r55 was DisCoStu's fix for the "no WorkingDir" issues, and included the new custom graphics for the installer.

For our future reference, when the r53 installer was run, it didn't associate a Working Directory value with the shortcuts it created. This meant that when PeerBlock created its peerblock.log file, or a peerblock.dmp file, the directory in which it was created could not be guaranteed. PeerBlock currently uses the Working Directory to decide this stuff, which since it wasn't set defaulted to the user's Desktop if they ran the shortcut from there, or C:\Windows\System if they ran it from somewhere else.

Commit r54 contains the new PeerBlock version-numbers, and should be referenced as a reminder as to which values need to be changed whenever we release a new version of PeerBlock. Note that we will of course need to pre-increment the build-number values, since as soon as we check-in that source-code change the build-number will change; this should be the last thing done prior to sending out a new release.

In addition to implementing the WorkingDir fix, commit r55 includes the new graphics for our installer: WizModernImage.bmp and WizModernSmallImage.bmp. We may want to update these once we come up with a unified "look and feel" to be shared among the program, the installer, and the website(s); but for now these look great to me.

Monday, June 29, 2009

Want a Signed Driver?

Yeah, you know you want it... A signed driver... So you don't need to jump through any of the hoops necessary to get unsigned drivers (like what PeerBlock - and PeerGuardian 2 before it - require to run) to load under recent versions of Windows.

What does it take to get an official signed driver? One thing, really:


Looks like there are only two places on the planet from which you can buy code-signing certificates that will instruct Windows that it's okay to load a driver. One of them costs $500/year, the other is $230/year. (Possibly plus taxes/VAT, I'm not yet sure.) To get to that point, we're going to need to all pitch in together!

After looking further into the matter, they will not sell code-signing certificates to individuals, only "registered organizations". This appears to mean that I'll need to setup an LLC or something before being "allowed" to purchase the code-signing certificate for us . . . at an additional cost of about $200 here in the state of New York in which I live. So our target goal is not the $230 I'd originally assumed, but more like $430. We're still over halfway to that larger value now, so will get there, it's just going to take a bit more time.

So to start things off, I've signed up at to accept donations. All money we initially collect will be pooled up until we have enough for one of these driver-signing certificates; anything over and above that will be used for better hosting for the project, and/or some additional PeerBlock-related ideas I have. Depending on how the cash flow ends up looking, money will also be set aside for future years' code-signing certificates; the $230+ payment only allows you to sign that driver for one year from the date of purchase, although anything we sign within that time will remain signed even after the certificate expires.

So click that little "Donate" image above, and let's see what we can do to get that signed driver! Donate as much as you feel comfortable with: the cost of a beer, the cost of a pizza, the cost of a CD, or a movie, or a videogame . . . even a single dollar will help to aid The Cause.

Status: As of 9/23/09, we've raised enough money to purchase our code-signing certificate (and all the company-registration stuff required to get to that point), and have in fact released a version that includes a signed-driver: PeerBlock r162 Interim Release! While we've talked this all over the rest of our site(s), I just noticed that I hadn't updated this post with our current status for awhile - figured I should do that. We are still collecting donations in the hopes that we will be able to afford to rent a VPS server which would hopefully support a "real" online-updating system, and in less than 12 months we'll need to purchase another $230 code-signing certificate, so rest assured that your donation will still be used for a good cause.

Thanks for your support!

        ---  Mark  ---

Edited to try a new direct-to-PayPal Donate button, so as to not require you to have a account to be able to donate. Here's the one in case you'd rather do it that way:

Support This Project
Edited 7/24/09 to reflect the fact that it turns out we'll need to register as a company before being allowed to purchase a code-signing certificate.
Edited 8/5/09 to include a "Status" line, showing how much we have in our driver-signing fund.

Sunday, June 28, 2009

PeerBlock r52 Interim Release

Here is the latest "test version" of PeerBlock - based on the code at SVN rev 52 at Google Code. Please give it a shot on your respective systems, and let me know one way or the other how it works for you.

What's Changed

Here's what's different since the last official public "ghetto release" of r33.

First off, and most importantly I think, the pg2loader.exe tool should no longer be necessary to start up PeerBlock. We should no longer be seeing the "hang while updating/adding-to lists" problem either.

Next up is the mini-dump functionality. In theory, any unhandled exceptions should be triggering creation of a peerblock.dmp file. In practice, however, I have been having some issues getting that to work reliably . . . particularly with the "app-crash on exit" problem I've been seeing every so often when exiting the "Release (Vista) x64" version of the program. If you end up generating any problems that result in the creation of a peerblock.dmp file, please send it to me along with your peerblock.log. Hopefully I'll have things setup to be able to analyze them this time.

PeerBlock now has new filenames, peerblock.exe and pbfilter.sys. This means that it can be installed in the same directory as your currently-installed PG2 install, without overwriting files. It also is now using peerblock.conf as its configuration file; if this file doesn't exist, it will first read-in pb2.conf and use that as its initial settings, and will then save to peerblock.conf (i.e. NOT overwriting pb2.conf) when you exit it.

Other than that, the program version now shows up in both the main UI window as well as in the "About" screen (right-click on icon, select "About"). Also the OS version you're running should be logged into the peerblock.log file.

Known Problems

These are some problems I've currently seen with the tool on my machine.
  1. Crash When Exiting - After right-clicking on the taskbar icon and selecting "Exit", sometimes the program crashes. Almost never happens while I'm running in the debugger, and the minidump-creation code doesn't seem to be kicking-in.
  2. Crash Before Updating - Very rarely, I've seen the program crash while it's preparing to setup network connections to check for updates. The one time I saw this in the debugger, it appeared to be while it was setting up the preconnect callback (which are PG2's modifications to the original libcurl library), so this is likely either a problem with those original routines, my port of them to the new libcurl codebase, or some combination thereof. Have not seen this happen since I got the minidump stuff built-in.
  3. Long Startup - It seems to take awhile after you first run the tool before it starts checking for updates and the taskbar icon appears. I only started seeing this recently, so it may be a side-effect of the minidump-creation stuff I put in there.
  4. Delayed UI - Even after the taskbar icon appears, if you double-click on it (or even right-click) it takes awhile for the UI to respond. The right-click menu takes awhile to appear, the main UI window takes awhile to show up and then after it shows up takes a second or so to become responsive as it scrolls through all the recent activity. This may be due to the fact that I've recently been stopping/restarting it while heavy network traffic (utorrent-based bittorrent) is underway so it's getting swamped - which may have been what led to the original PG2 warnings of "make sure utorrent is NOT running before you start PG2".
...and I think that's just about it. The last two of these issues have just recently started showing up, so may be due to recent updates I've made. The first two have actually been around for awhile now, but few other people have reported seeing them - so there may be some particular machine-configuration that brings them out.

If you can confirm/deny seeing any of these problems on your setup, please make sure to let me know!!

Things to Test

Here are some tests we should all try to run through on our respective machines:
  1. Side-by-Side Installation - Unzip the peerblock.exe and pbfilter.sys files into the same directory in which you currently have PG2 installed. Make sure that no peerblock.conf file is currently in that dir; delete the pre-existing peerblock.conf if it's there. Try running PeerBlock and make sure that its settings look the same as PG2's. Exit the program and make sure that a peerblock.conf is created. Start PG2 again and update some of the settings; then exit and restart it to make sure those new settings are successfully loaded.
  2. Base Install - Try unzipping peerblock.exe and pbfilter.sys into their own directory somewhere and running it. It should run through the "Startup Wizard", and afterwards should run normally (peerblock.conf and all). Verify this, and that there is no pg2.conf file in that directory afterwards.
  3. Version Display - Make sure that the title of the main UI window says "PeerBlock r52". Right-click on the taskbar icon and select "About"; verify that it says "PeerBlock r52" in there as well.
  4. OS Rev Logging - Open up peerblock.log and look up near the beginning of the file, verify that the "Running on OS:" line correctly states the version of Windows you're running.
  5. Update at Startup - Set PeerBlock's configuration to Update At Startup. Verify that the program starts, doesn't crash, and does in fact appear to be working correctly.
  6. Exit - Try exitting/restarting the program many times, to see if you can hit Problem #1 above.
  7. Update Lists - Check the update functionality, make sure no crashes occur. (i.e. test for Problem #2 mentioned above.)
  8. Startup Delays - Check for Problems #3 and #4 above.

Get it Here

Make sure you pick the right file for your OS rev!

Thanks for Contributing!

Thanks guys, I'm very appreciative that y'all are willing to help out with this pre-release testing. Hopefully we'll be able to smooth things out enough that we can agree it's ready for another public release sometime soon. Oh, and I'd like to extend thanks to you guys in the Official PeerBlock Credits (e.g., displayed in the About window) for your help. Let me know how you'd like to be credited (or if you'd rather not be, for some reason); full name like everything else in there now, some alias, both (e.g. Mark "MarkSide" Bulas), or what.

Again, if you encounter any problems whatsoever, please either drop me an email or comment to this blog-post describing the error, what OS rev you're running, etc. And make sure to save aside the peerblock.log and peerblock.dmp files for me from any problem-runs, before you restart PeerBlock.

Happy Testing!

        --- Mark ---