Remember that a socket isn't closed until both stream directions are shut down. It kinda looks like the remote end has either become unreachable or isn't implementing TCP active close properly. You're sending data which it is not ACKing, and it's not sending an RST either. It may be stuck for some reason, and not calling read().


Does JavaMail provide a way to enable keepalive on its sockets? That might help.

Joseph Shraibman wrote:

I have a connection to a mail server that was closed from the other end, but my local jvm is still hanging on to the socket (for like 6 or 7 hours):

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 1 11796 p5b.selectacast.n:45221 213.38.169.138:smtp CLOSE_WAIT


"MsgSender sending via mail.leebaron.com [213.38.169.138]" prio=1 tid=0x79f74000 nid=0x3ab0 runnable [825b1000..825b1cd8]
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:83)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:79)
- locked <0x4b188b20> (a java.io.BufferedOutputStream)
at com.sun.mail.util.CRLFOutputStream.write(CRLFOutputStream.java:41)
at com.sun.mail.smtp.SMTPOutputStream.write(SMTPOutputStream.java:36)
at com.sun.mail.util.QPEncoderStream.output(QPEncoderStream.java:162)
at com.sun.mail.util.QPEncoderStream.write(QPEncoderStream.java:109)
at com.sun.mail.util.QPEncoderStream.write(QPEncoderStream.java:64)
at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java:395)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:136)
- locked <0x4b18abd8> (a java.io.OutputStreamWriter)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:146)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:204)
at com.sun.mail.handlers.text_plain.writeTo(text_plain.java:126)
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:839)
at javax.activation.DataHandler.writeTo(DataHandler.java:295)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1201)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1611)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:493)
- locked <0x4b18abf0> (a com.sun.mail.smtp.SMTPTransport)



So how do I get around this problem?


---------------------------------------------------------------------- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



---------------------------------------------------------------------- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Reply via email to