再現方法
macOS
- 予め適当なパケットをresenderに送る
- IntercepterをONにして適当なパケットを止める
- IntercepterタブのRawタブのテキスト領域にフォーカスする
- その状態でショートカットcommand+sを押す
- Historyタブに行くと余計に1つパケットが送信されている
原因
おそらく、RawTextPane.javaにあるショートカットが実行されてしまっている。
RawTextPane.javaは少なくともHistoryタブとIntercepterで使われている。
現状ではRawTextPaneからは呼び出し元を知る術がないので難しいが、
何らかの方法で呼び出し元がHistoryかそれ以外かが識別できれば対策できそうです。
|
send.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.META_MASK)); |
|
send.addActionListener(new ActionListener() { |
|
public void actionPerformed(ActionEvent actionEvent) { |
|
try { |
|
JButton parentSend = getParentSend(); |
|
if (parentSend != null) { |
|
parentSend.doClick(); |
|
} else { |
|
Packet packet = GUIPacket.getInstance().getPacket(); |
|
ResendController.getInstance().resend(packet.getOneShotPacket(getData())); |
|
packet.setSentData(getData()); |
|
packet.setResend(); |
|
Packets.getInstance().update(packet); |
|
GUIHistory.getInstance().updateRequestOne(GUIHistory.getInstance().getSelectedPacketId()); |
|
} |
|
} catch (Exception e1) { |
|
e1.printStackTrace(); |
|
} |
|
} |
|
}); |
再現方法
macOS
原因
おそらく、RawTextPane.javaにあるショートカットが実行されてしまっている。
RawTextPane.javaは少なくともHistoryタブとIntercepterで使われている。
現状ではRawTextPaneからは呼び出し元を知る術がないので難しいが、
何らかの方法で呼び出し元がHistoryかそれ以外かが識別できれば対策できそうです。
PacketProxy/src/main/java/core/packetproxy/gui/RawTextPane.java
Lines 52 to 71 in 0b7b30d