From: Jon Parise Date: Mon, 13 May 2002 00:29:22 +0000 (+0000) Subject: Instead of calling mail_fetchheader_full() to retrieve the complete header X-Git-Tag: php-4.3.0dev-ZendEngine2-Preview1~73 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9ec5aa9a92a8388cf99dc0fbe369795c3327b822;p=php Instead of calling mail_fetchheader_full() to retrieve the complete header information just to extract the message envelope, call mail_fetchenvelope(), which returns just what we need. This is simpler, faster, and saves the IMAP server some work. Submitted by: Adam Kauffman --- diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index fba8d6db4a..ce2311cd90 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -1583,10 +1583,9 @@ PHP_FUNCTION(imap_headerinfo) { zval **streamind, **msgno, **fromlength, **subjectlength, **defaulthost; pils *imap_le_struct; - unsigned long length; MESSAGECACHE *cache; ENVELOPE *en; - char *mystring, dummy[2000], fulladdress[MAILTMPLEN]; + char dummy[2000], fulladdress[MAILTMPLEN]; int myargc = ZEND_NUM_ARGS(); if (myargc < 2 || myargc > 5 || zend_get_parameters_ex(myargc, &streamind, &msgno, &fromlength, &subjectlength, &defaulthost) == FAILURE) { @@ -1621,13 +1620,8 @@ PHP_FUNCTION(imap_headerinfo) RETURN_FALSE; } - mystring = mail_fetchheader_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL, &length, NIL); - if (myargc == 5) { - rfc822_parse_msg(&en, NULL, mystring, length, NULL, Z_STRVAL_PP(defaulthost), NIL); - } else { - rfc822_parse_msg(&en, NULL, mystring, length, NULL, "UNKNOWN", NIL); - } - + en = mail_fetchenvelope(imap_le_struct->imap_stream, Z_LVAL_PP(msgno)); + /* call a function to parse all the text, so that we can use the same function to parse text from other sources */ _php_make_header_object(return_value, en TSRMLS_CC); @@ -1662,7 +1656,6 @@ PHP_FUNCTION(imap_headerinfo) mail_fetchsubject(fulladdress, imap_le_struct->imap_stream, Z_LVAL_PP(msgno), Z_LVAL_PP(subjectlength)); add_property_string(return_value, "fetchsubject", fulladdress, 1); } - mail_free_envelope(&en); } /* }}} */