summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-02-21 10:42:42 +0300
committerDmitry Stogov <dmitry@zend.com>2017-02-21 10:42:42 +0300
commit508d78ce5edda085c0dfe794641af81c20359616 (patch)
tree4eb0c0786e82077653ea29579544febd285e6a5a
parentdd9701c41416c189660ea136f3144d10274de252 (diff)
parentbd7e5c1548fb9fa5c40446c9fc89e1b086eba312 (diff)
downloadphp-git-508d78ce5edda085c0dfe794641af81c20359616.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0: 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 7d4aea0314..1ca1c09128 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) {