X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libatalk%2Fdsi%2Fdsi_close.c;h=199954fce69ccfdeca888cf4ab3277ccb0ca4d01;hb=e450b7b95579a4a4358e499fdbf93620aa09bae2;hp=3e7a2fbd99d5ad99f2d3f499228aa0e1d902de3b;hpb=31843674b7bd32eabcce3a1ad6159b4f94921f79;p=netatalk.git diff --git a/libatalk/dsi/dsi_close.c b/libatalk/dsi/dsi_close.c index 3e7a2fbd..199954fc 100644 --- a/libatalk/dsi/dsi_close.c +++ b/libatalk/dsi/dsi_close.c @@ -1,23 +1,30 @@ /* + * * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu) * All rights reserved. See COPYRIGHT. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ + #include #include +#include + #include -#include void dsi_close(DSI *dsi) { /* server generated. need to set all the fields. */ - dsi->header.dsi_flags = DSIFL_REQUEST; - dsi->header.dsi_command = DSIFUNC_CLOSE; - dsi->header.dsi_requestID = htons(dsi_serverID(dsi)); - dsi->header.dsi_code = dsi->header.dsi_reserved = htonl(0); - dsi->cmdlen = 0; - - dsi_send(dsi); - dsi->proto_close(dsi); + if (!(dsi->flags & DSI_SLEEPING) && !(dsi->flags & DSI_DISCONNECTED)) { + dsi->header.dsi_flags = DSIFL_REQUEST; + dsi->header.dsi_command = DSIFUNC_CLOSE; + dsi->header.dsi_requestID = htons(dsi_serverID(dsi)); + dsi->header.dsi_data.dsi_code = dsi->header.dsi_reserved = htonl(0); + dsi->cmdlen = 0; + dsi_send(dsi); + dsi->proto_close(dsi); + } free(dsi); }