Patch milter_connect_ipaddr for Other web server Bug #51459
Patch version 2010-04-02 15:14 UTC
Return to Bug #51459 |
Download this patch
Patch Revisions:
Developer: steven@etrafficers.com
--- php_milter.c 2010-01-03 09:23:27.000000000 +0000
+++ ../../../../php-5.3.2/sapi/milter/php_milter.c 2010-04-01 21:00:00.000000000 +0000
@@ -172,7 +172,7 @@
static sfsistat mlfi_connect(SMFICTX *ctx, char *hostname, _SOCK_ADDR *hostaddr)
{
zend_file_handle file_handle;
- zval function_name, retval, *param[1];
+ zval function_name, retval, *param[2];
int status;
TSRMLS_FETCH();
@@ -205,16 +205,40 @@
INIT_ZVAL(function_name);
ALLOC_ZVAL(param[0]);
+ ALLOC_ZVAL(param[1]);
INIT_PZVAL(param[0]);
+ INIT_PZVAL(param[1]);
ZVAL_STRING(&function_name, "milter_connect", 0);
ZVAL_STRING(param[0], hostname, 1);
+ if(hostaddr)
+ {
+ char ipaddr[64];
+ switch(hostaddr->sa_family){
+ case AF_INET: {
+ struct sockaddr_in *sin = (struct sockaddr_in *)hostaddr;
+ inet_ntop(AF_INET, &sin->sin_addr.s_addr,ipaddr,sizeof(ipaddr));
+ ZVAL_STRING(param[1], ipaddr, 1);
+ break;
+ }
+ case AF_INET6: {
+ struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)hostaddr;
+ inet_ntop(AF_INET6, &sin6->sin6_addr, ipaddr, sizeof(ipaddr));
+ ZVAL_STRING(param[1], ipaddr, 1);
+ break;
+ }
+ }
+ }
+ else
+ {
+ ZVAL_STRING(param[1],"non_inet", 1);
+ }
/* set the milter context for possible use in API functions */
MG(ctx) = ctx;
MG(state) = MLFI_CONNECT;
- status = call_user_function(CG(function_table), NULL, &function_name, &retval, 1, param TSRMLS_CC);
+ status = call_user_function(CG(function_table), NULL, &function_name, &retval, 2, param TSRMLS_CC);
MG(state) = MLFI_NONE;
zval_ptr_dtor(param);
|