smbcomclose.c 578 B

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