[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: system/1878: MTU problem when sending mail using postfix
On Tue, Jun 19, 2001 at 11:10:15PM +1000, Damien Miller wrote:
...
> I've seen this behaviour too when using PPPoE ADSL using /usr/sbin/ppp and
> the tcpmssfixup option.
tcpmssfixup should fix the problem. Anyway, there's two bugs there :
- when 'set mut foo' is used in the ppp configuration (or when the
negociated mtu is below 1500 bytes), ppp use that mtu for the route
between the local IP and the gateway it negociated, but not for the
default route. The default route has always an MTU of 1500 bytes.
- (in the kernel) ip_output() rejects packets too big for an interface
with errno=EMSGSIZE but tcp_output() doesn't deal with this error
condition and thus pass it up to the userland (I assume).
A fix for the second bug, (shamelessly stolen from FreeBSD's kernel) :
(Damien, can you test it ?)
--- sys/netinet/tcp_output.c~ Fri Dec 8 23:46:30 2000
+++ sys/netinet/tcp_output.c Sat Jun 16 03:05:07 2001
@@ -1078,6 +1078,10 @@
tcp_quench(tp->t_inpcb, 0);
return (0);
}
+ if (error == EMSGSIZE) {
+ tcp_mtudisc(tp->t_inpcb, 0);
+ return (0);
+ }
if ((error == EHOSTUNREACH || error == ENETDOWN)
&& TCPS_HAVERCVDSYN(tp->t_state)) {
tp->t_softerror = error;
I can attach a detailed tcpdump & test procedure to gnats if needed.
--
Rémi