Archive for the ‘Charles’ Category

Charles 3.0 public beta 2

Wednesday, March 14th, 2007

Thank you to everyone who has posted and emailed feedback. I’ve just uploaded a new beta version that includes a few fixes and some small new features.

The fixes and small changes include:

  • Map Local tool now closes files correctly (thanks to Martin for reporting this issue)
  • Statistics for multiple requests now include more information to backup the Repeat Advanced feature
  • Save All now only saves responses with a 2XX status code, so you don’t save empty files for 404s etc
  • Rewrite tool could cause loading of 304 responses to hang

The new feature is an enhanced SWF viewer that now reports font information for SWFs. Expect to see more here in the future…

I didn’t mention in the previous release announcement, but the Save and Copy To Clipboard features in Charles has been expanded. Save is now available for request and response, if appropriate. Copy To Clipboard has been added for requests and responses, and will now copy images as images - so you can paste straight into other software.

Download

Charles 3.0 public beta

Saturday, March 10th, 2007

I’m excited to announce the availability of Charles 3.0 public beta!

3.0 adds a number of major new features and enhancements worthy of an increase in major version number. As always, if you’re a registered user your license continues to be valid for this and every future release of Charles.

The important new features are:

  • Editing and repeating of requests, including query strings, forms and AMF
  • Chart view
  • Application icon improved, especially on Windows
  • Repeat function can now repeat multiple requests, including iterations and concurrency
  • Local mapping tool to use local files as if they are part of a website
  • Mapping tool to map parts of one website into another
  • and many other enhancements and bug fixes

Editing and repeating requests was an often requested feature; allowing you to edit the query parameters, headers and contents of a request, and repeat it against the server. This is an extension of the Repeat function added in Charles v2.5. At the moment the editing capability includes headers, query strings, forms and Flash Remoting / AMF. I’m particularly excited about the AMF editing; you can change method parameters and re-execute your AMF request against your server all within Charles.

The Chart view is a graphical representation of the existing Summary tab. It visualises the loading timeline of the resources associated with a page, or all of the resources under a path or on a site. It makes clear the sequence in which resources are loaded, which are loaded in parallel or in series and what’s making your page take so long to load.

The mapping tools help you during the development of website. They primarily exist to help avoid the upload-and-test pattern that we sometimes have to follow. Using Map Local you can now attach a local directory to a URL, and when Charles sees a request for that site it will first check if it has the file locally. This is transparent to your browser so it behaves as if the file was loaded from the remote website as usual. This should be especially useful for people testing CSS, image and SWF changes: you can test your changes as if they were on the live site, before you put them live. Map local can map entire sites, certain paths within sites or even specific file types (eg. *.swf).

The Map tool works like the Map Local tool except it maps one website into another. Because Map Local only works with static files, Map is the other half of the solution. If you’ve got a development server back-end that you’d like to test as if it was on the live site, you can use the Map tool to accomplish that. Mapping like this was already possible using the Rewrite tool, however this makes it easier and quicker to setup.

So, please download the beta and send me feedback - especially bugs and especially any regressions!

Download Charles 3.0 public beta

Charles v2.6.4 released

Tuesday, February 27th, 2007

This is another minor bug fix release. The bugs included IBM JDK compatibility, improved malformed Referer header handling and compatibility improvements with some web servers. This update is recommended for everyone.

Download v2.6.4

Hopefully the next release will be version 2.7 in beta form. I’ll be announcing some of the new features here in the next few days and a beta download will be available to anyone who would like to try it.

Charles v2.6.3 released

Saturday, February 17th, 2007

This is a minor bug fix release for the 2.6.2 release of two weeks ago. Version 2.6.3 corrects problems with the Port Forwarding tool introduced in the previous release. Thank you to Grant Wilson for detecting the bug and for testing the fix.

Throttling, MTU and fragmentation

Monday, February 12th, 2007

In December last year Rich Riendeau reported excessive packet fragmentation from the throttling implementation in Charles v2.6.1. While the simulation of the bandwidth was accurate, it didn’t necessarily reflect the structure of the packets as they would actually exist on the network in a bandwidth limited situation.

Packets are usually be sent out onto the network in fragments equal to the MTU, however Charles tried to share the throttled bandwidth between multiple connections by allowing data through in chunks of approximately 1/10 of the available bandwidth. Therefore depending upon your throttling configuration, and the number of concurrent connections, Charles could produce more packet fragments than would be expected. So as of Charles v2.6.2 the throttling system has been tweaked to use MTU-size packets.

As a consequence of this there is an MTU setting as part of the throttling configuration. On a broadband connection (and on any Ethernet network) the MTU is often 1500 bytes, however on a modem or PPP connection the MTU is 576 bytes and packets must be fragmented to fit. Charles now has the capability to simulate the MTU differences on different types of connections and thus effect the appropriate realistic fragmentation.

Looking to the future: a feature that has been requested a few times is random throttling to simulate variable Internet conditions. I’ve spoken to several people about it and I think that its time may be near! If you’ve got any thoughts about it I’d be pleased to hear them.

No more memory full. No more recording limits.

Monday, February 12th, 2007

Charles previously stored all of the request and response information in memory, so if you had Charles running for a few hours (or browsed a lot of images) it would quite often run out of its 64 MB of heap and stop recording until you had emptied the session. I have Charles running all day every day and I’d have to clear the session several times a day: frustrating.

Furthermore, in an effort to reduce the memory usage, Charles would only record the first 100 KB (or so, this was configurable) of binary files such as images, videos and executables. This helped to not use up all the free memory so quickly, however it also meant that you’d sometimes miss the end of something you were interested in. For example, with the introduction of AMF parsing (a binary format) I had to extend the default 1 MB cut off for binary files to avoid truncating large AMF messages.

But wait! In version 2.6.2 both problems have been solved. Charles now saves large requests and responses to temporary files on the hard drive, and there is just one configurable recording limit (defaulting to 10 MB per request/response) to prevent excessive storage. Recording still uses memory, and you’ll see the memory indicator increase in Charles the more you record, however it should be significantly slower to fill up completely.

Charles v2.6.2 released

Monday, February 12th, 2007

On the 1st of February (one day before I was off to Kiwi Foo Camp) Charles v2.6.2 was released and can be downloaded from the usual place. I’m going to blog separately about the major new features in an effort to look more blog-prolific.

Here are the highlights:

  • No more recording limits. Large responses are now saved to temporary files, reducing memory usage.
  • MTU support in the throttle settings
  • AMF3 / Flex 2 bug fixes

AMF3 reference deserializer in Java updated

Saturday, December 23rd, 2006

Thanks to bug reports from Patrick Mineault from AMFPHP, I have fixed some more AMF3 parsing bugs in Charles (currently in beta). With that comes an updated release of the AMF3 reference deserializer. This update includes object parsing improvements (externalisable and dynamic types now properly identified), mixed arrays (string keys) and reference bug fixes.

Thanks to everyone who has reported bugs or otherwise done work on uncovering AMF3.

Download the source code here: AMF3Deserializer.zip

Charles v2.6.1 released

Saturday, December 2nd, 2006

A quick maintenance release was made to Charles today. This release includes improved behaviour for the SOAP viewer and AMF viewer (specifically for AMF3 / Flex applications), and a regression bug fix in the AMF3 parser.

The regression bug was related to parsing of externalizable ActionScript 3 classes; after the improvements to the AMF3 parser in v2.6 the implementation for externalizable classes wasn’t reinstituted. Thank you to Mike and Evert for drawing my attention to the problem.

Charles v2.6 released

Monday, November 27th, 2006

Charles v2.6 has been released today. You can download it from the usual place. Thank you to everyone that helped during the beta period, especially Matthew Buchanan who was the inspiration for the visual improvements and finder of the icon set.

The list of changes:

  • Major UI overhaul, including the use of Quaqua and
    JGoodies libraries to improve the native
    look and feel on Mac OS X and Windows respectively.
  • Internal windows removed and replaced by a tab navigation if multiple sessions are open.
  • Sequence view now uses a table when in Wide layout, to show a quick summary of important attributes.
  • XML tree display. View XML documents in a tree format as well as the existing pretty-printed text format.
  • XML pretty-printed text format improved to not load DTDs.
  • JSON and JSON-RPC support.
  • SOAP support.
  • AMF3 parsing improvements.
  • AMF parser now displays during the response download and shows download progress.
  • Fixed nil dereference in Mac OS X proxy configuration in some configurations.
  • Rewrite Tool body rules now support non-type mime types and improved debugging output.