--- orig/meta1-1.0.PreAlpha28.0/smtpc/smclt.c	2008-03-05 17:36:48.000000000 +0200
+++ meta1-1.0.PreAlpha28.0/smtpc/smclt.c	2009-06-01 16:53:59.000000000 +0300
@@ -176,6 +176,10 @@ sc_talkingtomyself(sc_sess_P sc_sess)
 	return SM_SUCCESS;
 }
 
+#define SC_SESS_ADDR(sc_sess)						\
+	((sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?		\
+	 inet_ntoa(sc_sess->scse_rmt_addr.sin.sin_addr)			\
+	 : sc_sess->scse_rmt_addr.sunix.sun_path)
 /*
 **  SC_RD_REPLY -- read reply/replies from SMTP server
 **
@@ -411,11 +415,13 @@ sc_rd_reply(sc_t_ctx_P sc_t_ctx, int pha
 			sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 				SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 				SM_LOG_INFO, 8,
-				"sev=INFO, func=sc_rd_reply, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, mail=%@S, stat=%m, reply=%@S",
+				"sev=INFO, func=sc_rd_reply, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, mail=%@S, stat=%m, reply=%@S, relay=%s",
 				thr_id, sc_sess->scse_id,
 				sc_ta->scta_id, sc_ta->scta_ssta_id,
 				sc_ta->scta_mail->scm_pa, ret,
-				sc_sess->scse_rd);
+				sc_sess->scse_str,
+				SC_SESS_ADDR(sc_sess));
+
 			if (ret != SMTP_OK) {
 				sc_ta->scta_mail->scm_reply = sm_str_dup(sc_ta->scta_rpool,
 							sc_sess->scse_rd);
@@ -480,11 +486,12 @@ sc_rd_reply(sc_t_ctx_P sc_t_ctx, int pha
 				sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 					SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 					SM_LOG_INFO, 8,
-					"sev=INFO, func=sc_rd_reply, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, rcpt=%@S, stat=%m, reply=%@S",
+					"sev=INFO, func=sc_rd_reply, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, rcpt=%@S, stat=%m, reply=%@S, relay=%s",
 					thr_id, sc_sess->scse_id,
 					sc_ta->scta_id, sc_ta->scta_ssta_id,
 					sc_rcpt->scr_pa, ret,
-					sc_sess->scse_rd);
+					sc_sess->scse_rd,
+					SC_SESS_ADDR(sc_sess));
 				SCR_SET_FLAG(sc_rcpt, SCR_FL_LOGGED);
 			}
 
@@ -1645,10 +1652,11 @@ sc_data(sc_t_ctx_P sc_t_ctx)
 	sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 		SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 		SM_LOG_INFO, 8,
-		"sev=INFO, func=sc_data, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, where=final_dot, size=%lu, stat=%m, reply=%@S",
+		"sev=INFO, func=sc_data, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, where=final_dot, size=%lu, stat=%m, reply=%@S, relay=%s",
 		sc_t_ctx->sct_thr_id, sc_sess->scse_id,
 		sc_ta->scta_id, sc_ta->scta_ssta_id,
-		(ulong) total_size, ret, sc_sess->scse_str);
+		(ulong) total_size, ret, sc_sess->scse_str,
+		SC_SESS_ADDR(sc_sess));
 	return ret;
 
   error:
@@ -1985,10 +1993,11 @@ sc_one_ta(sc_t_ctx_P sc_t_ctx)
 		sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 			SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 			SM_LOG_INFO, 8,
-			"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, mail=%@S, stat=%m, reply=%@S",
+			"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, mail=%@S, stat=%m, reply=%@S, relay=%s",
 			thr_id, sc_sess->scse_id, sc_ta->scta_id,
 			sc_ta->scta_ssta_id, sc_ta->scta_mail->scm_pa, ret,
-			sc_sess->scse_str);
+			sc_sess->scse_str,
+			SC_SESS_ADDR(sc_sess));
 	}
 	if (!SMTPC_OK_REPLY(ret)) {
 		sc_ta->scta_mail->scm_reply = sm_str_dup(NULL, sc_sess->scse_rd);
@@ -2076,10 +2085,11 @@ sc_one_ta(sc_t_ctx_P sc_t_ctx)
 				sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 					SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 					SM_LOG_INFO, 8,
-					"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, rcpt=%@S, stat=%m, reply=%@S",
+					"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, rcpt=%@S, stat=%m, reply=%@S, relay=%s",
 					thr_id, sc_sess->scse_id, sc_ta->scta_id,
 					sc_ta->scta_ssta_id, sc_rcpt->scr_pa, ret,
-					sc_sess->scse_str);
+				        sc_sess->scse_str,
+				        SC_SESS_ADDR(sc_sess));
 				SCR_SET_FLAG(sc_rcpt, SCR_FL_LOGGED);
 			}
 		}
@@ -2148,12 +2158,13 @@ sc_one_ta(sc_t_ctx_P sc_t_ctx)
 		sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 			SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 			SM_LOG_INFO, 8,
-			"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, where=data, ret=%m, rcpts_ok=%d, state=%r, reply=%@S"
+			"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, where=data, ret=%m, rcpts_ok=%d, state=%r, reply=%@S, relay=%s"
 			, thr_id, sc_sess->scse_id, sc_ta->scta_id
 			, sc_ta->scta_ssta_id, ret
 			, sc_ta->scta_rcpts_ok
 			, sc_ta->scta_state
-			, sc_sess->scse_str);
+			, sc_sess->scse_str
+			, SC_SESS_ADDR(sc_sess));
 		if (sc_ta->scta_err_state == DA_ERR_NONE ||
 		    (da_ta_err_cmd(sc_ta->scta_err_state) == DA_TA_ERR_RCPT &&
 		     sc_ta->scta_rcpts_ok > 0))
@@ -2365,13 +2376,11 @@ sc_sess_open(sc_t_ctx_P sc_t_ctx)
 		sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 			SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 			SM_LOG_INFO, 8,
-			"sev=INFO, func=sc_sess_open, thread=%u, da_sess=%s, where=connect, port=%d, addr=%s, error=%s",
+			"sev=INFO, func=sc_sess_open, thread=%u, da_sess=%s, where=connect, port=%d, relay=%s, error=%s",
 			thr_id, sc_sess->scse_id,
 			(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?
 				ntohs(sc_sess->scse_rmt_addr.sin.sin_port): -1,
-			(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?
-				inet_ntoa(sc_sess->scse_rmt_addr.sin.sin_addr) :
-				sc_sess->scse_rmt_addr.sunix.sun_path,
+			SC_SESS_ADDR(sc_sess),
 			strerror(r));
 		sm_str_scat(sc_sess->scse_str, strerror(r));
 		sc_sess->scse_err_st = DA_SE_ERR_OPEN_I;
@@ -2384,13 +2393,11 @@ sc_sess_open(sc_t_ctx_P sc_t_ctx)
 	sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 		SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 		SM_LOG_INFO, 10,
-		"sev=INFO, func=sc_sess_open, thread=%u, da_sess=%s, status=connected, port=%d, addr=%s",
+		"sev=INFO, func=sc_sess_open, thread=%u, da_sess=%s, status=connected, port=%d, relay=%s",
 		thr_id, sc_sess->scse_id,
 		(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?
 			ntohs(sc_sess->scse_rmt_addr.sin.sin_port): -1,
-		(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?
-			inet_ntoa(sc_sess->scse_rmt_addr.sin.sin_addr) :
-			sc_sess->scse_rmt_addr.sunix.sun_path);
+		SC_SESS_ADDR(sc_sess));
 
 	ret = sc_rd_reply(sc_t_ctx, SC_PHASE_INIT);
 	if (ret != SMTP_OK) {
@@ -2514,9 +2521,7 @@ sc_sess_open(sc_t_ctx_P sc_t_ctx)
 			(void) tls_get_info(sc_ctx->scc_tlsl_ctx,
 				sc_sess->scse_con,
 				TLS_F_SRV|TLS_F_CERT_REQ,
-				(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET)
-				? inet_ntoa(sc_sess->scse_rmt_addr.sin.sin_addr)
-				: sc_sess->scse_rmt_addr.sunix.sun_path,
+				SC_SESS_ADDR(sc_sess),
 				sc_sess->scse_tlsi);
 			sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 				SC_LCAT_CLIENT, SC_LMOD_CLIENT,
