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