- my ($a, $len) = unpack "cc", substr( $_[0], 0, 2 );
-
- return ( substr( $_[0], 2, $len ), substr( $_[0], 2 + $len ) );
+ #my ($a, $len) = unpack "cc", substr( $_[0], 0, 2 );
+ my $len=ord(substr ($_[0], 1, 1)) - 64;
+ if ($len <0) { #length is numeric, and thus comes from the web client, not the desktop client.
+ $_[0] =~ m/.(\d+)/;
+ $len = $1;
+ return ( substr( $_[0], length($len)+1 , $len ), substr( $_[0], length($len) + 1 + $len ) );
+ }
+ return ( substr( $_[0], 2 , $len ), substr( $_[0], 2 + $len ) );