アプリ版:「スタンプのみでお礼する」機能のリリースについて

curlでデータを送信直後にctrl + cで処理を中断したところ下記のような例外が発生しました。

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:992)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:928)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:505)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
... 9 more

BufferedInputStreamのreadメソッドで例外が発生したわけですが、
InputRecord.javaを調べたところ、以下の記載がありました
参考URL:
http://grepcode.com/file/repository.grepcode.com …

502 int really = readFully(
503 s, v2Buf, exlen - headerSize, len + headerSize - exlen);
504 if (really < 0) {
505 throw new EOFException("SSL peer shut down incorrectly");
506 }

さらにreadFullyを追うと、以下の記載がありました
312 int readLen = s.read(b, off + n, len - n);
313 if (readLen < 0) {
314 return readLen;
315 }

312行目で読み込んだ最初の1文字が終端であったため、戻り値-1となり
EOFExceptionが発生したと思うのですが、
BufferedInputStreamのreadメソッドの仕様は、最初に読み込んだ文字が終端なら
EOFExceptionが発生する仕様なんでしょうか?

A 回答 (2件)

例外を投げているのは sun.security.ssl.InputRecord ですよね?


BufferedInputStreamでは無いです。

ざっと見る限り電文ヘッダに書いてある電文長を読み取る前に
通信が切れたっぽい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。大変助かります。
ロードバランサのヘルスチェックでエラーになったのですが、
(本当かどうかは謎ですが、)ヘルスチェックは最初の1文字がEOFという話を伺っています。
最初の1文字がEOFの場合は、このようなエラーにはならないのでしょうか?
通信が切れたという可能性は高そうですか?

お礼日時:2017/04/29 12:05

勿論ちがいます。

ソースからも明瞭です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
出来れば、解析して頂けると嬉しいです。

SLL通信のときに起こる事象なんですかね。

お礼日時:2017/04/29 08:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!