#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
#ifdef HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#endif
#include <ctype.h>
#include "SAPI.h"
#ifdef ZEND_ENGINE_2
-#include "ext/standard/php_http.h"
+# include "ext/standard/php_http.h"
#else
-#include "http_build_query.c"
+ #include "http_build_query.c"
#endif
#include "php_http.h"
#ifdef HTTP_HAVE_CURL
-#ifdef PHP_WIN32
-#include <winsock2.h>
-#include <sys/types.h>
-#endif
+# ifdef PHP_WIN32
+# include <winsock2.h>
+# include <sys/types.h>
+# endif
+
+# include <curl/curl.h>
+# include <curl/easy.h>
-#include <curl/curl.h>
-#include <curl/easy.h>
#endif
/* single range */
if ((c = zend_hash_num_elements(Z_ARRVAL_P(zranges))) == 1) {
char range_header[256] = {0};
-
+
zend_hash_index_find(Z_ARRVAL_P(zranges), 0, (void **) &zrange);
zend_hash_index_find(Z_ARRVAL_PP(zrange), 0, (void **) &begin);
zend_hash_index_find(Z_ARRVAL_PP(zrange), 1, (void **) &end);
/* multi range */
else {
int i;
- char bound[23] = {0}, preface[1024] = {0},
+ char bound[23] = {0}, preface[1024] = {0},
multi_header[68] = "Content-Type: multipart/byteranges; boundary=";
-
+
snprintf(bound, 22, "--%d%0.9f", time(NULL), php_combined_lcg(TSRMLS_C));
strncat(multi_header, bound + 2, 21);
http_send_header(multi_header);
SUCCESS != zend_hash_index_find(
Z_ARRVAL_PP(zrange), 1, (void **) &end)) {
break;
- }
+ }
snprintf(preface, 1023,
- HTTP_CRLF "%s"
+ HTTP_CRLF "%s"
HTTP_CRLF "Content-Type: %s"
HTTP_CRLF "Content-Range: bytes %ld-%ld/%ld"
- HTTP_CRLF
+ HTTP_CRLF
HTTP_CRLF,
-
- bound,
- HTTP_G(ctype) ? HTTP_G(ctype) : "application/x-octetstream",
- **begin,
- **end,
+
+ bound,
+ HTTP_G(ctype) ? HTTP_G(ctype) : "application/x-octetstream",
+ **begin,
+ **end,
size
);
-
+
php_body_write(preface, strlen(preface) TSRMLS_CC);
http_send_chunk(data, **begin, **end + 1, mode);
}
case '\n':
if (colon && (*line != ' ') && (*line != '\t')) {
char *key = estrndup(header, colon - header);
- add_assoc_stringl(array, key, colon + 2, line - colon - 4, 1);
+ while (isspace(*(++colon)));
+ add_assoc_stringl(array, key, colon, line - colon - 2, 1);
efree(key);
colon = NULL;
#endif
/* }}} HAVE_CURL */
-/* {{{ void http_auth_header(char *, char*) */
-PHP_HTTP_API void _http_auth_header(const char *type, const char *realm TSRMLS_DC)
+/* {{{ STATUS http_auth_header(char *, char*) */
+PHP_HTTP_API STATUS _http_auth_header(const char *type, const char *realm TSRMLS_DC)
{
- char realm_header[1024];
- snprintf(realm_header, 1024, "WWW-Authenticate: %s realm=\"%s\"", type, realm);
- http_send_status_header(401, realm_header);
+ char realm_header[1024] = {0};
+ snprintf(realm_header, 1023, "WWW-Authenticate: %s realm=\"%s\"", type, realm);
+ return http_send_status_header(401, realm_header);
}
/* }}} */