[Mew-dist 1739] Re: concatination of partial messages (patch for IM-65)
Motonori Nakamura
motonori at example.com
1997年 8月 29日 (金) 07:13:43 JST
>>>>> On Thu, 28 Aug 1997 18:12:27 +0900, Kiwame TOKAI (東海研) <tokai at example.com> said:
tokai> Content-Type: headerが複数行になっていて、partial部の記述が2行
tokai> 目以降だとうまく行きません。
確かに、そうでした。
せっかく、scan 用にヘッダ解析しているので、それを利用するように
しました。ただ、noscan の場合でも Scan.pm を require することに
なりますが、imget は 99.47% の確率で scan つきで実行されるので、
良いことにしましょう。
# imput で SMTP の際にエラーになった場合のレポートルーチンに
# 問題があったので、それの fix も含んでいます。
- motonori@数字を信じちゃダメよ
--- IM.in/MsgStore.pm.in- Fri Aug 29 06:41:07 1997
+++ IM.in/MsgStore.pm.in Fri Aug 29 06:53:22 1997
@@ -86,6 +86,7 @@
my ($Msg, $dst) = @_;
my ($PrevDst, @Hdr);
local *ART;
+ require IM::Scan && import IM::Scan;
im_notice("saving the message into $dst\n");
if ($PrevDst ne $dst) {
@@ -120,16 +121,10 @@
}
my @Hdr = @$Msg[0..$hcount];
+ my %Head;
+ &store_header(\%Head, join('', @Hdr));
unless ($main::opt_noscan) {
- require IM::Scan && import IM::Scan;
-
-# my $f = expand_path($file);
-# my %Head = get_header($f);
- my %Head;
-
- &store_header(\%Head, join('', @Hdr));
-
splice(@$Msg, 0, $hcount);
$Head{'body:'} = &parse_body($Msg, 1);
@@ -146,13 +141,12 @@
# }
}
- # XXX should be optimized
- my $mid = &header_value(\@Hdr, 'Message-ID');
-# my $dt = &header_value(\@Hdr, 'Date');
- (my $ver = &header_value(\@Hdr, 'Mime-Version')) =~ s/\s//g;
+ my $mid = $Head{'message-id'};
+# my $dt = $Head{'date'};
+ (my $ver = $Head{'mime-version'}) =~ s/\s//g;
my $master = '';
if ($ver eq '1.0') {
- my $ct = &header_value(\@Hdr, 'Content-Type') . ';';
+ my $ct = $Head{'content-type'} . ';';
$ct =~ s/\s//g;
if ($ct =~ m|^Message/partial;(.*;)?id=([^;]+);|i) {
$master = $2;
--- IM.in/Smtp.pm.in- Sun Aug 17 12:12:24 1997
+++ IM.in/Smtp.pm.in Fri Aug 29 07:00:12 1997
@@ -269,7 +269,7 @@
select (SMTPd); $| = 0; select (STDOUT);
&set_crlf("\r\n");
&put_mimed_error_notify(\*SMTPd, $Header, $Body, \@prev_rcpt, \@prev_stat,
- $Esmtp_flag ? 'esmtp' : 'smtp', 1, &get_session_log);
+ $Esmtp_flag ? 'esmtp' : 'smtp', &get_cur_server, 1, &get_session_log);
select (SMTPd); $| = 1; select (STDOUT);
return $rc if ($rc = &tcp_command(\*SMTPd, '.', ''));
my (@resp) = &command_response;
--- IM.in/Message.pm.in- Fri Aug 29 06:56:00 1997
+++ IM.in/Message.pm.in Fri Aug 29 06:58:43 1997
@@ -737,13 +737,14 @@
##### GENERATE MIMED ERROR NOTIFY #####
#
# put_mimed_error_notify(channel, header, body, recipients, status, protocol,
-# hidden_dot, session_log)
+# server, hidden_dot, session_log)
# channel: socket/file descriptor to write out
# header: message header
# bory: message body
# recipients:
# status:
# protocol:
+# server:
# hidden_dot: hidden dot algorithm is used if true
# session_log: logged messaged when error occurs
# return value: (XXX)
@@ -752,7 +753,8 @@
#
sub put_mimed_error_notify (*$$$$$$) {
local *CHAN = shift;
- my ($Header, $Body, $Recp, $Stat, $proto, $hidden_dot, $session_log) = @_;
+ my ($Header, $Body, $Recp, $Stat, $proto, $server,
+ $hidden_dot, $session_log) = @_;
my $subj;
my $crlf = &crlf;
@@ -826,7 +828,7 @@
print CHAN "Action: failure$crlf";
print CHAN "Status: 5.1.1$crlf"; # XXX
}
- print CHAN 'Remote-MTA: ' . &get_cur_server() . $crlf;
+ print CHAN "Remote-MTA: $server$crlf";
print CHAN "Diagnostic-Code: smtp; $$Stat[$i]$crlf";
}
}
Mew-dist メーリングリストの案内