powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Закрытие сессии
2 сообщений из 2, страница 1 из 1
Закрытие сессии
    #34139491
zizitopa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хай админы! Вопрос:
Имеется сервер на SUSE 10.1, работает как файл сервер. Поднята Самба работающая как основной контроллер домена. Имеется расшареная папка с базами. Клиенты на осях 98/2K... Имеется Досовская программа которая обращается к сетевой папке на сервере...
Периодически вылетает ошибка чтения на некоторых клиентах (сервер ни с того ни с сего закрывает сессию на ). На некоторых может работать целый день и не выдать ошибки, на некоторых вылетает через каждые пятнадцать двадцать минут... так же если в программе некоторое время не работаешь то тоже может закрыть сессию, а может и не закрыть...
как сделать чтобы сервер не закрывал соединения?
лог файла smbd.log
#
smbd /service.c:close.cnum(892)
...
Рейтинг: 0 / 0
Закрытие сессии
    #34139893
Фотография Oerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samba-3.0.10/source/smbd

service.c
Код: plaintext
1.
void close_cnum(connection_struct *conn, uint16 vuid)
reply.c
Код: plaintext
1.
2.
3.
4.
5.
        /* we might have to close an old one */
        if ((SVAL(inbuf,smb_vwv2) & 0x1) && conn) {
                close_cnum(conn,vuid);
        }


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
/****************************************************************************
 Reply to a tdis.
****************************************************************************/

int reply_tdis(connection_struct *conn,
               char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
{
        int outsize = set_message(outbuf, 0 , 0 ,True);
        uint16 vuid;
        START_PROFILE(SMBtdis);

        vuid = SVAL(inbuf,smb_uid);

        if (!conn) {
                DEBUG( 4 ,("Invalid connection in tdis\n"));
                END_PROFILE(SMBtdis);
                return ERROR_DOS(ERRSRV,ERRinvnid);
        }

        conn->used = False;

        close_cnum(conn,vuid);

        END_PROFILE(SMBtdis);
        return outsize;
}

conn.c

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
/****************************************************************************
receive a smbcontrol message to forcibly unmount a share
the message contains just a share name and all instances of that
share are unmounted
the special sharename '*' forces unmount of all shares
****************************************************************************/
void msg_force_tdis(int msg_type, pid_t pid, void *buf, size_t len)
{
        connection_struct *conn, *next;
        fstring sharename;

        fstrcpy(sharename, buf);

        if (strcmp(sharename, "*") ==  0 ) {
                DEBUG( 1 ,("Forcing close of all shares\n"));
                conn_close_all();
                return;
        }

        for (conn=Connections;conn;conn=next) {
                next=conn->next;
                if (strequal(lp_servicename(conn->service), sharename)) {
                        DEBUG( 1 ,("Forcing close of share %s cnum=%d\n",
                                 sharename, conn->cnum));
                        close_cnum(conn, (uint16)- 1 );
                }
        }
}

Я ставлю на /* we might have to close an old one */

http://surgutnet.ru
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Закрытие сессии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]