1
0
mirror of https://github.com/samba-team/samba.git synced 2025-05-28 21:05:48 +03:00

s3-libsmb: update libsmb to use new DLIST macros

manipulating p->prev directly is not safe any more
(cherry picked from commit 3c650ac1e3e1cdbbabecfddcd29325f20b5dcb48)
This commit is contained in:
Andrew Tridgell 2010-02-06 12:40:38 +11:00 committed by Jeremy Allison
parent 7842b391b9
commit d550621561
2 changed files with 25 additions and 23 deletions

View File

@ -351,7 +351,7 @@ static struct cli_state *cli_cm_find(struct cli_state *cli,
}
/* Search to the start of the list. */
for (p = cli; p; p = p->prev) {
for (p = cli; p; p = DLIST_PREV(p)) {
if (strequal(server, p->desthost) &&
strequal(share,p->share)) {
return p;

View File

@ -693,29 +693,8 @@ void cli_nt_pipes_close(struct cli_state *cli)
Shutdown a client structure.
****************************************************************************/
void cli_shutdown(struct cli_state *cli)
static void _cli_shutdown(struct cli_state *cli)
{
if (cli->prev == NULL) {
/*
* Possible head of a DFS list,
* shutdown all subsidiary DFS
* connections.
*/
struct cli_state *p, *next;
for (p = cli->next; p; p = next) {
next = p->next;
cli_shutdown(p);
}
} else {
/*
* We're a subsidiary connection.
* Just remove ourselves from the
* DFS list.
*/
DLIST_REMOVE(cli->prev, cli);
}
cli_nt_pipes_close(cli);
/*
@ -755,6 +734,29 @@ void cli_shutdown(struct cli_state *cli)
TALLOC_FREE(cli);
}
void cli_shutdown(struct cli_state *cli)
{
struct cli_state *cli_head;
DLIST_HEAD(cli, cli_head);
if (cli_head == cli) {
/*
* head of a DFS list, shutdown all subsidiary DFS
* connections.
*/
struct cli_state *p, *next;
for (p = cli_head->next; p; p = next) {
next = p->next;
DLIST_REMOVE(cli_head, p);
_cli_shutdown(p);
}
} else {
DLIST_REMOVE(cli_head, cli);
}
_cli_shutdown(cli);
}
/****************************************************************************
Set socket options on a open connection.
****************************************************************************/