char *scratch = NULL;
char *tmp = NULL;
char *ua_str = NULL;
- zval *ua_zval = NULL, *tmpzval = NULL;
- zval **ua_zval = NULL, **tmpzval = NULL, *ssl_proxy_peer_name = NULL;
++ zval *ua_zval = NULL, *tmpzval = NULL, ssl_proxy_peer_name;
int scratch_len = 0;
int body = 0;
char location[HTTP_HEADER_BLOCK_SIZE];
efree(transport_string);
if (stream && use_proxy && use_ssl) {
- if (!context || php_stream_context_get_option(context, "ssl", "peer_name", &tmpzval) == FAILURE) {
- MAKE_STD_ZVAL(ssl_proxy_peer_name);
- ZVAL_STRING(ssl_proxy_peer_name, resource->host, 1);
- php_stream_context_set_option(stream->context, "ssl", "peer_name", ssl_proxy_peer_name);
+ /* Set peer_name or name verification will try to use the proxy server name */
++ if (!context || (tmpzval = php_stream_context_get_option(context, "ssl", "peer_name")) == NULL) {
++ ZVAL_STRING(&ssl_proxy_peer_name, resource->host);
++ php_stream_context_set_option(stream->context, "ssl", "peer_name", &ssl_proxy_peer_name);
+ }
+
smart_str header = {0};
smart_str_appendl(&header, "CONNECT ", sizeof("CONNECT ")-1);
Uppercase the first character of every word in a string */
PHP_FUNCTION(ucwords)
{
- char *str;
+ char *str, *delims = " \t\r\n\f\v";
register char *r, *r_end;
- int str_len;
+ int str_len, delims_len = 6;
+ char mask[256];
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
+#ifndef FAST_ZPP
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &str, &str_len, &delims, &delims_len) == FAILURE) {
return;
}
- ZEND_PARSE_PARAMETERS_START(1, 1)
+#else
++ ZEND_PARSE_PARAMETERS_START(1, 2)
+ Z_PARAM_STRING(str, str_len)
++ Z_PARAM_OPTIONAL
++ Z_PARAM_STRING(delims, delims_len)
+ ZEND_PARSE_PARAMETERS_END();
+#endif
if (!str_len) {
RETURN_EMPTY_STRING();
}
- ZVAL_STRINGL(return_value, str, str_len, 1);
+ php_charmask((unsigned char *)delims, delims_len, mask TSRMLS_CC);
+
+ ZVAL_STRINGL(return_value, str, str_len);
r = Z_STRVAL_P(return_value);
*r = toupper((unsigned char) *r);
return 1;
}
{
- char *header_name = zend_str_tolower_dup(client->current_header_name, client->current_header_name_len);
- zend_hash_str_add_ptr(&client->request.headers, header_name, client->current_header_name_len, value);
- zend_hash_str_add_ptr(&client->request.headers_original_case, client->current_header_name, client->current_header_name_len, value);
- efree(header_name);
+ /* strip off the colon */
- char *orig_header_name = estrndup(client->current_header_name, client->current_header_name_len);
++ zend_string *orig_header_name = STR_INIT(client->current_header_name, client->current_header_name_len, 1);
+ char *lc_header_name = zend_str_tolower_dup(client->current_header_name, client->current_header_name_len);
-
- zend_hash_add(&client->request.headers, lc_header_name, client->current_header_name_len + 1, &value, sizeof(char *), NULL);
- zend_hash_add(&client->request.headers_original_case, orig_header_name, client->current_header_name_len + 1, &value, sizeof(char *), NULL);
++ zend_hash_str_add_ptr(&client->request.headers, lc_header_name, client->current_header_name_len, value);
++ zend_hash_add_ptr(&client->request.headers_original_case, orig_header_name, value);
+ efree(lc_header_name);
- efree(orig_header_name);
++ STR_RELEASE(orig_header_name);
}
if (client->current_header_name_allocated) {