nerevar / jmc

JMC - Jaba Mud Client
26 stars 14 forks source link

Неверный ответ на IAC DO BINARY в версии 3.7.14-3.7.22 (в 3.6 бага нет) #99

Closed Kyrie1965 closed 2 months ago

Kyrie1965 commented 2 months ago

Если сервер отсылает: IAC DO BINARY (FF FD 0)

JMC 3.7.14 и 3.7.22 отвечает: IAC WONT (без указания опции)

Это неверный формат. Ответ должен быть (как и у других клиентов, как и у JMC 3.6): IAC WONT BINARY

Проверить можно на сервере rmud.org:3041. Сразу после выбора кодировки идёт обмен служебными командами, где JMC совершает ошибку.

@konelav, дружище, поправь, пожалуйста. Прости, что дергаю второй раз.

Kyrie1965 commented 2 months ago

Где-то классический баг. Опция BINARY — это 0. Т.е. JMC где-то проверяет опцию через if, получает false и просто не добавляет её в буффер для отправки.

konelav commented 2 months ago

@Kyrie1965 проверьте, пожалуйста, по-моему поправилось: https://github.com/konelav/jmc/releases/tag/3723

[#telnet debug]
#telnet option: debug [ON]

[#mess telnet]
#Messages 'telnet' ON

[#conn rmud.org 3041]
#Connecting to host...
#Host's adress: 147.135.203.202
#Trying to connect...
#Connection established.

#TELNET recv IAC:GA
Please choose a MUD client:
  1: Any UTF-8 client
  2: ZMUD 3.0
  3: JMC
  4: ZMUD 7.0+

Alternatively, choose an encoding:
  w: CP-1251 (WINDOWS)
  u: UTF-8 (Mac OS, Linux)
  k: KOI8-R
  d: CP-866 (DOS)
  m: MAC (old)

Make a choice:  
#TELNET recv IAC:DO:0[BINARY] [Binary data stream]
#TELNET send IAC:WONT:0[BINARY] [Binary data stream]
#TELNET recv IAC:WILL:86[MCCP] [MUD Client Compression Protocol v2]
#TELNET send IAC:DONT:86[MCCP] [MUD Client Compression Protocol v2]
#TELNET recv IAC:GA
Kyrie1965 commented 2 months ago

Подтверждаю — исправлено и работает корректно. Спасибо!

Kyrie1965 commented 2 months ago

Исправлено.