From 0e8c5cfff2d3b0f4897379b42e8ef46dc875b6f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Mill=C3=A1n?= Date: Wed, 14 Nov 2012 18:09:28 +0100 Subject: [PATCH] Fixed Contact and Record-Route header split. --- src/Parser.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Parser.js b/src/Parser.js index 6566adcff..32de02f6f 100644 --- a/src/Parser.js +++ b/src/Parser.js @@ -87,12 +87,14 @@ JsSIP.Parser = (function() { } break; case 'record-route': - header = header_value.split(','); + header = header_value.match(/([^\"\',]*((\'[^\']*\')*||(\"[^\"]*\")*))+/gm); length = header.length; parsed = 0; for(idx=0; idx < length; idx++) { - message.addHeader('record-route', header[idx]); + if (header[idx].length > 0) { + message.addHeader('record-route', header[idx]); + } } break; case 'call-id': @@ -105,12 +107,17 @@ JsSIP.Parser = (function() { break; case 'contact': case 'm': - header = header_value.split(','); + header = header_value.match(/([^\"\',]*((\'[^\']*\')*||(\"[^\"]*\")*))+/gm); length = header.length; for(idx=0; idx < length; idx++) { - message.addHeader('contact', header[idx]); - parsed = message.parseHeader('contact', idx); + if (header[idx].length > 0) { + message.addHeader('contact', header[idx]); + parsed = message.parseHeader('contact', idx); + if (parsed === undefined) { + break; + } + } } break; case 'content-length':