etag test & fixes; set default etag mode for temp streams to crc32(b)
[m6w6/ext-http] / php_http_message_body.c
index 1129c54930fa51823e52de22f8c71329f349d036..7019de30e763498b2e946ffd5df3ee00d80920bf 100644 (file)
@@ -123,8 +123,12 @@ PHP_HTTP_API char *php_http_message_body_etag(php_http_message_body_t *body)
        } else {
                php_http_etag_t *etag = php_http_etag_init(PHP_HTTP_G->env.etag_mode TSRMLS_CC);
 
-               php_http_message_body_to_callback(body, (php_http_pass_callback_t) php_http_etag_update, etag, 0, 0);
-               return php_http_etag_finish(etag);
+               if (etag) {
+                       php_http_message_body_to_callback(body, (php_http_pass_callback_t) php_http_etag_update, etag, 0, 0);
+                       return php_http_etag_finish(etag);
+               } else {
+                       return NULL;
+               }
        }
 }
 
@@ -286,7 +290,7 @@ static inline char *format_key(uint type, char *str, ulong num, const char *pref
        } else if (type == HASH_KEY_IS_STRING) {
                new_key = estrdup(str);
        } else {
-               estrdup("");
+               new_key = estrdup("");
        }
 
        return new_key;