From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <43307A72.9060007@nm.ru> Date: Wed, 21 Sep 2005 00:09:06 +0300 From: Artem User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050719) X-Accept-Language: en-us, en MIME-Version: 1.0 To: ALT Linux Sisyphus discussion list Subject: Re: [sisyphus] =?KOI8-R?Q?=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C9?= =?KOI8-R?Q?=D3=D4=CF=D2=C9=C9_=D3_slmodem_=C9_kppp?= References: <432DE7C3.5010808@nm.ru> In-Reply-To: <432DE7C3.5010808@nm.ru> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Sep 2005 21:10:02 -0000 Archived-At: List-Archive: Artem wrote: > Доброго времени суток. > Напомню, что проблема состояла в том, что по нажатии кнопки disconnect > в kppp, > демон pppd умирал, но kppp не вешал трубку. > После сегодняшних упражнений выяснил, что ,при дисконнекте, чтобы > повесить трубку модема, > необходимо сделать что-то вроде > echo "ATH" > /dev/ttySLM0 > Одна из грабель по этому поводу (обнаруженная позднее). В дефолтных > настройках kppp > строка hangup выглядит так: "+++ATH". Но slmodem такую строку не > принимает (проверял вручную > из терминала kppp). Slmodem после +++ выдает OK, после чего можно > делать ATH. Но если же сделать > +++ATH - то никакой ответной реакции не будет. Ковыряние в исходниках > показало, что HANGUP в kppp > выполняется в 2 приема - сначала выполняется строка escape "+++" - > затем, когда модем оказывается в > командном режиме - выполняется непосредственно "ATH". Подозреваю, что > "+++ATH" в качестве hangup - > не совсем корректная вещь? Данная строка дефолтная и содержится в > pppdata.cpp, линия 759 > > const QString PPPData::modemHangupStr() > { return > readConfig(cmodemgroup, HANGUPSTR_KEY, > "+++ATH"); } > > Просьба community проверить подобное поведение на своих slmodem. Ну что же. Раз все молчат - буду писать в Bugzilla :-) > > Основная же проблема решается 2-мя способами, но какой из них > правильнее - я не знаю, поэтому спрашиваю совета. > 1. Добавление > if(Modem::modem->opentty()) > Modem::modem->hangup() ; > в метод > void KPPPWidget::delayedDisconnect() { > // this is where the actual disconnection takes place > (файл kpppwidget.cpp) > 2. Добавление > if(Modem::modem->opentty()) > Modem::modem->hangup() ; > в обработчик сигнала > void KPPPWidget::sigPPPDDied() { > kdDebug(5002) << "Received a SIGUSR1" << endl; > (тот же файл) > > Вот собственно - и вопрос: в каком случае более правильное > исправление? В обработчике нажатия клавиши disconnect ? Или в > обработчике сигнала, уведомляющего о том, что pppd - "сдох" > (посылается сигнал SIGUSR1). ? > Насколько я понимаю - SIGUSR1 посылает "рутовая" часть kppp - > пользовательской ? В debug log при этом след. сообщения: > It was pppd that died > pppd exited with return value 16 > Sending 28779 a SIGUSR1 > > kppp: Received a SIGUSR1 > Добавил и туда, и туда. В первом случае - hangup отрабатывается по нажатию disconnect, во втором- когда убивается pppd (проверял kill-ом) > > P.S. kdenetwork-kppp-3.4.1-alt1 > P.P.S. Патч тоже постить в bugzilla ?