Node 0.4 вышла. Проапдейтил NNTP

По поводу выхода стабильной node.js 0.4, выкатил ее на продакшен и плотно занялся вычисткой NNTP-гейта. Заборол 2 неочевидных косяка.

  1. Если кто пользуется напрямую связкой Server/Socket, то не надо пытаться в сокете ловить событие “connect”. Потому что оно устарело. Вся инициализация пишется прямо в listener сервера.

github.com/…/ad6db4af0b307445066eaae6ae43badd166e9…

После этого сразу заработали TLS-разновидности сокета и сервера.

  1. Поймал некислый race condition.

Предыстория такова. У NNTP протокол получается stateful. В HTTP соединения “короткие”, и авторизация делается каждый раз по кукам. В NNTP все не так - кук нет, коннекты могут быть по несколько минут, и авторизация надо помнить.

Ну я организовал объект сессии, а по разрыву соединения сессию грохал. И вот тут словил глюк, когда клиент рвал коннект в середине обмена. Система ведь асинхронная. Ответ может прийти с задержкой, когда его уже перестали ждать.

Вот и получалось иногда, что отвечалка пыталась лезть к удаленной сессии, вызывая эксепшен. Не особо фатально, но внутри мусор копился. Прока просто на всех callback-ах поставил проверок. Не очень нравится, но красивее пока не придумал. Как будет настроение - еще чего-нибудь порефакторю.

С памятью после правок вроде полегчало. И похоже, что меньше кушает теперь.

  • 583