summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-02-21 10:41:20 +0300
committerDmitry Stogov <dmitry@zend.com>2017-02-21 10:41:20 +0300
commitbd7e5c1548fb9fa5c40446c9fc89e1b086eba312 (patch)
treeb70a4b11f84e65687a2d37c2a3cbe3e89e963d2a
parentc836ad1c7eac2a142cc334ea9cf9975bcd0d6f77 (diff)
downloadphp-git-bd7e5c1548fb9fa5c40446c9fc89e1b086eba312.tar.gz
Increase WSDL cache version (7.0 wsdl cache is incomatible with PHP-5)
Include WSDL cache version number into file name
-rw-r--r--ext/soap/php_sdl.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index 9b4698430a..fa5706f1c5 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -1174,7 +1174,7 @@ static sdlPtr load_wsdl(zval *this_ptr, char *struri)
return ctx.sdl;
}
-#define WSDL_CACHE_VERSION 0x0e
+#define WSDL_CACHE_VERSION 0x0f
#define WSDL_CACHE_GET(ret,type,buf) memcpy(&ret,*buf,sizeof(type)); *buf += sizeof(type);
#define WSDL_CACHE_GET_INT(ret,buf) ret = ((unsigned char)(*buf)[0])|((unsigned char)(*buf)[1]<<8)|((unsigned char)(*buf)[2]<<16)|((int)(*buf)[3]<<24); *buf += 4;
@@ -3204,7 +3204,7 @@ sdlPtr get_sdl(zval *this_ptr, char *uri, zend_long cache_wsdl)
PHP_MD5Update(&context, (unsigned char*)uri, uri_len);
PHP_MD5Final(digest, &context);
make_digest(md5str, digest);
- key = emalloc(len+sizeof("/wsdl-")-1+user_len+sizeof(md5str));
+ key = emalloc(len+sizeof("/wsdl-")-1+user_len+2+sizeof(md5str));
memcpy(key,SOAP_GLOBAL(cache_dir),len);
memcpy(key+len,"/wsdl-",sizeof("/wsdl-")-1);
len += sizeof("/wsdl-")-1;
@@ -3213,6 +3213,17 @@ sdlPtr get_sdl(zval *this_ptr, char *uri, zend_long cache_wsdl)
len += user_len-1;
key[len++] = '-';
}
+ key[len++] = '-';
+ if (WSDL_CACHE_VERSION <= 0x9f) {
+ key[len++] = (WSDL_CACHE_VERSION >> 8) + '0';
+ } else {
+ key[len++] = (WSDL_CACHE_VERSION >> 8) - 10 + 'a';
+ }
+ if ((WSDL_CACHE_VERSION & 0xf) <= 0x9) {
+ key[len++] = (WSDL_CACHE_VERSION & 0xf) + '0';
+ } else {
+ key[len++] = (WSDL_CACHE_VERSION & 0xf) - 10 + 'a';
+ }
memcpy(key+len,md5str,sizeof(md5str));
if ((sdl = get_sdl_from_cache(key, uri, t-SOAP_GLOBAL(cache_ttl), &cached)) != NULL) {