X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fpacket_receive.c;h=ac8156106e02c5616018027769623d1ff4fe015b;hb=2652f16abc04e55355d948a10d92ce9771ca1f4b;hp=5a49ca314e2cc1bd7fdd2eb7091a417955f26211;hpb=ce742c4140e578ab25c84eef9c189892c3681214;p=silc.git diff --git a/apps/silcd/packet_receive.c b/apps/silcd/packet_receive.c index 5a49ca31..ac815610 100644 --- a/apps/silcd/packet_receive.c +++ b/apps/silcd/packet_receive.c @@ -3951,6 +3951,23 @@ void silc_server_resume_client(SilcServer server, FALSE, TRUE); } + /* If the client has a locally-connected previous owner, then we + will need to notify them that the resume has completed. Note + that if the previous owner was a router, this case is already + handled above by the broadcast, so we shouldn't attempt to + send another notification in that case. Additionally, if + the previous owner was the server that sent the packet, then + we'll not send the notification as it will have already done + the necessary work locally. */ + if (server->server_type == SILC_ROUTER && + idata->conn_type == SILC_CONN_SERVER && + detached_client->router && + SILC_IS_LOCAL(detached_client->router) && + detached_client->router->server_type != SILC_ROUTER) + silc_server_packet_send(server, detached_client->router->connection, + SILC_PACKET_RESUME_CLIENT, 0, + buffer->data, silc_buffer_len(buffer)); + /* Client is detached, and now it is resumed. Remove the detached mode and mark that it is resumed. */