nmosafi / aspComet

A Comet / Bayeux implementation for ASP.NET
http://groups.google.com/group/aspcomet/
MIT License
106 stars 28 forks source link

MessageConverter.ToJson Error [{, (other solution) #16

Open bloublou opened 12 years ago

bloublou commented 12 years ago

Hello, thanks for your project.

Same Issue as #14 but with another solution for Regex

Env: VS2010, .net4 Browser: FF9.0.1, IE9 Sys: Sys7 x64 Program : Chat-vs2010 Version : downloaded 23/12/2011 23h33

Bug : Sometimes MessageConverter.ToJson send back a "bad" string with error on format. Example :

case 1 : FF9.0.1, when click on handshake from cometdTerminal.html Post on comet.axd/handshake [{"ext":{"authentication":{"user":"User","credentials":"password"}},"version":"1.0","minimumVersion":"0.9","channel":"/meta/handshake","supportedConnectionTypes":["long-polling"],"id":6}]

Returns : [{,"version":"1.0","channel":"/meta/handshake","supportedConnectionTypes":["long-polling"],"id":"1","clientId":"Ngv9SfTkgSKQeEaElqZ","advice":{"reconnect":"retry"},"successful":true}]

FF made an error : JSON.parse: expected property name or '}' return JSON.parse(src); on function $.secureEvalJSON = function(src) Supposed error : [{, coma should not be there

origin :

MessageConverter.CreateNullRegexString() You create a long Regex with a lot of possibilities :

("channel":null,)|(,"channel":null)|("clientId":null,)|(,"clientId":null)|("data":null,)|(,"data":null)|("version":null,)|(,"version":null)|("minimumVersion":null,)|(,"minimumVersion":null)|("supportedConnectionTypes":null,)|(,"supportedConnectionTypes":null)|("advice":null,)|(,"advice":null)|("connectionType":null,)|(,"connectionType":null)|("id":null,)|(,"id":null)|("timestamp":null,)|(,"timestamp":null)|("successful":null,)|(,"successful":null)|("subscription":null,)|(,"subscription":null)|("error":null,)|(,"error":null)|("ext":null)|(,"ext":null)

with case 1 message is : [{"ext":null,"version":"1.0","minimumVersion":null,"channel":"/meta/handshake","supportedConnectionTypes":["long-polling"],"id":"2","clientId":"Xg6gcCTsc7Tgofof60p","data":null,"advice":{"reconnect":"retry"},"connectionType":null,"timestamp":null,"successful":true,"subscription":null,"error":null}]

Converted message : [{,"version":"1.0","channel":".....

NullRegexString could be {"[^"]+":null[,}]?|,"[^"]+":null

considering : {"blabla":null, {"blabla":null} ,"blabla":null and message will be fine.

Hiller commented 12 years ago

@bloublou better pattern is (?<{0}>,)?""{0}"":null(?({0})|,?) i used unique condition group name equals to property name just to be sure ))))