diff --git a/ext/curl/interface.c b/ext/curl/interface.c index aba5273d5496c..36df07153f3bd 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -2660,6 +2660,17 @@ PHP_FUNCTION(curl_getinfo) RETURN_FALSE; } break; + case CURLINFO_CONTENT_TYPE: { + char *s_code = NULL; + + if (curl_easy_getinfo(ch->cp, option, &s_code) == CURLE_OK && s_code) { + RETURN_STRING(s_code); + } else { + RETURN_NULL(); + } + break; + } + default: { int type = CURLINFO_TYPEMASK & option; switch (type) { diff --git a/ext/curl/tests/bug16929.phpt b/ext/curl/tests/bug16929.phpt new file mode 100644 index 0000000000000..df8ed4046a288 --- /dev/null +++ b/ext/curl/tests/bug16929.phpt @@ -0,0 +1,44 @@ +--TEST-- +Bug #16929 (curl_getinfo($ch, CURLINFO_CONTENT_TYPE) returns false when Content-Type header is not set) +--EXTENSIONS-- +curl +--FILE-- + +--EXPECTF-- +NULL +NULL +string(%d) "text/html; charset=UTF-8" +string(%d) "text/html; charset=UTF-8" diff --git a/ext/curl/tests/responder/get.inc b/ext/curl/tests/responder/get.inc index c139c8c7d43a8..5304c5f37eabb 100644 --- a/ext/curl/tests/responder/get.inc +++ b/ext/curl/tests/responder/get.inc @@ -29,6 +29,9 @@ case 'contenttype': header('Content-Type: text/plain;charset=utf-8'); break; + case 'emptycontenttype': + header('Content-Type: '); + break; case 'file': if (isset($_FILES['file'])) { echo $_FILES['file']['name'] . '|' . $_FILES['file']['type'] . '|' . $_FILES['file']['size'];