xref: /plan9/sys/src/cmd/aquarela/smbcomclose.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1 #include "headers.h"
2 
3 SmbProcessResult
smbcomclose(SmbSession * s,SmbHeader * h,uchar * pdata,SmbBuffer *)4 smbcomclose(SmbSession *s, SmbHeader *h, uchar *pdata, SmbBuffer *)
5 {
6 	SmbTree *t;
7 	SmbFile *f;
8 	ushort fid;
9 	if (!smbcheckwordcount("comclose", h, 3))
10 		return SmbProcessResultFormat;
11 	t = smbidmapfind(s->tidmap, h->tid);
12 	if (t == nil) {
13 		smbseterror(s, ERRSRV, ERRinvtid);
14 		return SmbProcessResultError;
15 	}
16 	fid = smbnhgets(pdata);
17 	f = smbidmapfind(s->fidmap, fid);
18 	if (f == nil) {
19 		smbseterror(s, ERRDOS, ERRbadfid);
20 		return SmbProcessResultError;
21 	}
22 	smbfileclose(s, f);
23 	return smbbufferputack(s->response, h, &s->peerinfo);
24 }
25