X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fxmlrpc.inc;h=a4c9ef2238e5cbcef53c3cc552ae291975b185ab;hb=2df63e76b84037b28b9a534d9df06c75537caefb;hp=b02eae2fb41012bb3099912c72c091df45d52279;hpb=fe0fb0e92d6bcd85d153059f593d387c286f9f76;p=plcapi.git
diff --git a/lib/xmlrpc.inc b/lib/xmlrpc.inc
index b02eae2..a4c9ef2 100644
--- a/lib/xmlrpc.inc
+++ b/lib/xmlrpc.inc
@@ -89,7 +89,8 @@
'METHODNAME' => array('METHODCALL'),
'PARAMS' => array('METHODCALL', 'METHODRESPONSE'),
'FAULT' => array('METHODRESPONSE'),
- 'NIL' => array('VALUE') // only used when extension activated
+ 'NIL' => array('VALUE'), // only used when extension activated
+ 'EX:NIL' => array('VALUE') // only used when extension activated
);
// define extra types for supporting NULL (useful for json or )
@@ -220,9 +221,12 @@
/// @deprecated
$GLOBALS['xmlrpc_backslash']=chr(92).chr(92);
- // set to TRUE to enable correct decoding of values
+ // set to TRUE to enable correct decoding of and values
$GLOBALS['xmlrpc_null_extension']=false;
+ // set to TRUE to enable encoding of php NULL values to instead of
+ $GLOBALS['xmlrpc_null_apache_encoding']=false;
+
// used to store state during parsing
// quick explanation of components:
// ac - used to accumulate values
@@ -495,6 +499,7 @@
$GLOBALS['_xh']['vt']=null;
break;
case 'NIL':
+ case 'EX:NIL':
if ($GLOBALS['xmlrpc_null_extension'])
{
if ($GLOBALS['_xh']['vt']!='value')
@@ -720,6 +725,7 @@
$GLOBALS['_xh']['method']=preg_replace('/^[\n\r\t ]+/', '', $GLOBALS['_xh']['ac']);
break;
case 'NIL':
+ case 'EX:NIL':
if ($GLOBALS['xmlrpc_null_extension'])
{
$GLOBALS['_xh']['vt']='null';
@@ -2289,7 +2295,7 @@ xmlrpc_encode_entitites($this->errstr, $GLOBALS['xmlrpc_internalencoding'], $cha
}
}
// be tolerant to line endings, and extra empty lines
- $ar = split("\r?\n", trim(substr($data, 0, $pos)));
+ $ar = preg_split("/\r?\n/", trim(substr($data, 0, $pos)));
while(list(,$line) = @each($ar))
{
// take care of multi-line headers and cookies
@@ -2922,7 +2928,14 @@ xmlrpc_encode_entitites($this->errstr, $GLOBALS['xmlrpc_internalencoding'], $cha
$rs.="<${typ}>".preg_replace('/\\.?0+$/','',number_format((double)$val, 128, '.', ''))."${typ}>";
break;
case $GLOBALS['xmlrpcNull']:
- $rs.="";
+ if ($GLOBALS['xmlrpc_null_apache_encoding'])
+ {
+ $rs.="";
+ }
+ else
+ {
+ $rs.="";
+ }
break;
default:
// no standard type value should arrive here, but provide a possibility
@@ -3399,7 +3412,7 @@ xmlrpc_encode_entitites($this->errstr, $GLOBALS['xmlrpc_internalencoding'], $cha
{
$xmlrpc_val = new xmlrpcval('', $GLOBALS['xmlrpcString']);
}
- if (in_array('null_extension', $options))
+ else if (in_array('null_extension', $options))
{
$xmlrpc_val = new xmlrpcval('', $GLOBALS['xmlrpcNull']);
}