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:
parent
7842b391b9
commit
d550621561
@ -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;
|
||||
|
@ -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.
|
||||
****************************************************************************/
|
||||
|
Loading…
x
Reference in New Issue
Block a user