summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aquarela/smbcomclose.c
blob: 9a47a3066f0760ce6257acbb7e47d3092ca7a05b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "headers.h"

SmbProcessResult
smbcomclose(SmbSession *s, SmbHeader *h, uchar *pdata, SmbBuffer *)
{
	SmbTree *t;
	SmbFile *f;
	ushort fid;
	if (!smbcheckwordcount("comclose", h, 3))
		return SmbProcessResultFormat;
	t = smbidmapfind(s->tidmap, h->tid);
	if (t == nil) {
		smbseterror(s, ERRSRV, ERRinvtid);
		return SmbProcessResultError;
	}
	fid = smbnhgets(pdata);
	f = smbidmapfind(s->fidmap, fid);
	if (f == nil) {
		smbseterror(s, ERRDOS, ERRbadfid);
		return SmbProcessResultError;
	}
	smbfileclose(s, f);
	return smbbufferputack(s->response, h, &s->peerinfo);
}