From bd7e5c1548fb9fa5c40446c9fc89e1b086eba312 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 21 Feb 2017 10:41:20 +0300 Subject: [PATCH] Increase WSDL cache version (7.0 wsdl cache is incomatible with PHP-5) Include WSDL cache version number into file name --- ext/soap/php_sdl.c | 15 +++++++++++++-- 1 file 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) { -- 2.40.0