메신져 서버( openfire ) 을 사용중 문제가 발생하였습니다. 어떤 문제가 발생하였으냐... 끙...
클라이언트에서 메시지를 보내주면 친구 리스트에게 메시지를 전송하는 역할을 하는 중에
다음과 같은 문제가 발생하였습니다. ( ㅋㅋ 너무 자주 일어나네요.. )
그래서 단순히 클라이언트에서 유니코드로 올라오는 패킷이 잘못되었다. 이렇게 생각을
하였습니다. 그런데 클라이언트에서 보내기 직전 / 보낸 후 문자열이 멀쩡한걸루 로그 상에는
남더군요.. 그래서 ( CSI 조사하면 다나와 ) 조사를 하게 되었죠.
네트워크 상에서 중간에 패킷을 캡쳐하는 방법으로 서버가 받기 전, 받은 후를 비교하였습니다.
비교하는 과정에서 정보가 틀린것을 알게 되었습니다.
일단 ngrep 으로 해당 포트로 전송되는 것을 캡쳐한 것이구 또 하나는 서버에서 처리 후, broadcast로 전송하기 위한
패킷인데 <body> 안에 들어가는 한글에 해당하는 0x 진수가 틀린것을 확인하였습니다.
그럼 왜 깨졌을까? 고민에 빠져있습니다.
미나( mina )라이브러리를 통해 이벤트가 발생하면
즉 처음 스니퍼 했을 당시에 ( ㅁㄴㅇㄻ니ㅏㅇ러ㅣㅏㅁㄴ어ㅣ라ㅓㅁㄴㄴ;ㅇㄹ ) 문자였다면 서버에서 받은 후, 함수 messageReceived 이벤트가 발생 후( ㅁㄴㅇㄻ니ㅏㅇ��ㅣㅏㅁㄴ어ㅣ라ㅓㅁㄴㄴ;ㅇㄹ ) 와 같은 문자열로 변경되었다는 것입니다.
아마 내부 로직에 의해서 ( MINA )에 의해 변경되지 않았을까 하는 생각을 하게 됩니다. 버전별 교체해 가면서
테스트를 해볼까 합니다.
클라이언트에서 메시지를 보내주면 친구 리스트에게 메시지를 전송하는 역할을 하는 중에
다음과 같은 문제가 발생하였습니다. ( ㅋㅋ 너무 자주 일어나네요.. )
ㅁㄴㅇㄻ니ㅏㅇ��ㅣㅏㅁㄴ어ㅣ라ㅓㅁㄴㄴ;ㅇㄹ ( 응 뭐라구? )
그래서 단순히 클라이언트에서 유니코드로 올라오는 패킷이 잘못되었다. 이렇게 생각을
하였습니다. 그런데 클라이언트에서 보내기 직전 / 보낸 후 문자열이 멀쩡한걸루 로그 상에는
남더군요.. 그래서 ( CSI 조사하면 다나와 ) 조사를 하게 되었죠.
네트워크 상에서 중간에 패킷을 캡쳐하는 방법으로 서버가 받기 전, 받은 후를 비교하였습니다.
64 79 3e e3 85 81 e3 84 b4 e3 85 87 e3 84 bb e3 dy>.............
84 b4 e3 85 87 e3 84 bb ef bf bd ef bf bd e3 85 ................
87 e3 84 bb e3 84 b4 e3 85 87 e3 84 b9 3c 2f 62 .............</b
84 b4 e3 85 87 e3 84 bb ef bf bd ef bf bd e3 85 ................
87 e3 84 bb e3 84 b4 e3 85 87 e3 84 b9 3c 2f 62 .............</b
74 22 3e 3c 62 6f 64 79 3e e3 85 81 e3 84 b4 e3 t"><body>.......
85 87 e3 84 bb eb 8b 88 e3 85 8f e3 85 87 eb 9f ................
ac e3 85 a3 e3 85 8f e3 85 81 e3 84 b4 ec 96 b4 ................
e3 85 a3 eb 9d bc e3 85 93 e3 85 81 e3 84 b4 e3 ................
84 b4 3b e3 85 87 e3 84 b9 3c 2f 62 6f 64 79 3e ..;......</body>
85 87 e3 84 bb eb 8b 88 e3 85 8f e3 85 87 eb 9f ................
ac e3 85 a3 e3 85 8f e3 85 81 e3 84 b4 ec 96 b4 ................
e3 85 a3 eb 9d bc e3 85 93 e3 85 81 e3 84 b4 e3 ................
84 b4 3b e3 85 87 e3 84 b9 3c 2f 62 6f 64 79 3e ..;......</body>
비교하는 과정에서 정보가 틀린것을 알게 되었습니다.
일단 ngrep 으로 해당 포트로 전송되는 것을 캡쳐한 것이구 또 하나는 서버에서 처리 후, broadcast로 전송하기 위한
패킷인데 <body> 안에 들어가는 한글에 해당하는 0x 진수가 틀린것을 확인하였습니다.
그럼 왜 깨졌을까? 고민에 빠져있습니다.
미나( mina )라이브러리를 통해 이벤트가 발생하면
messageReceived( IoSession session, Object message )
호출이 됩니다. 그럼 이미 여기서 message 이미 한글에 대해서 깨져있습니다.즉 처음 스니퍼 했을 당시에 ( ㅁㄴㅇㄻ니ㅏㅇ러ㅣㅏㅁㄴ어ㅣ라ㅓㅁㄴㄴ;ㅇㄹ ) 문자였다면 서버에서 받은 후, 함수 messageReceived 이벤트가 발생 후( ㅁㄴㅇㄻ니ㅏㅇ��ㅣㅏㅁㄴ어ㅣ라ㅓㅁㄴㄴ;ㅇㄹ ) 와 같은 문자열로 변경되었다는 것입니다.
아마 내부 로직에 의해서 ( MINA )에 의해 변경되지 않았을까 하는 생각을 하게 됩니다. 버전별 교체해 가면서
테스트를 해볼까 합니다.
'Management > openfire' 카테고리의 다른 글
[ openfire ] vCard 작성법 (2) | 2011.06.10 |
---|---|
[ 목차 ] Openfire Messenger eclipse 디버깅 (0) | 2011.03.15 |
[ openfire ] 친구초대 버그 수정. (1) | 2010.11.29 |
[ openfire ] 2010.11.22 Roster 삭제 현상. (0) | 2010.11.22 |
[ openfire ] 메신져 관련 데이터 정리 (0) | 2010.11.17 |