• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/samba-3.5.8/source4/libcli/smb2/

Lines Matching refs:req

135 		struct smb2_request *req = transport->pending_recv;
136 req->state = SMB2_REQUEST_ERROR;
137 req->status = status;
138 DLIST_REMOVE(transport->pending_recv, req);
139 if (req->async.fn) {
140 req->async.fn(req);
245 struct smb2_request *req = NULL;
281 for (req=transport->pending_recv; req; req=req->next) {
282 if (req->seqnum == seqnum) break;
285 if (!req) {
292 req->in.buffer = buffer;
293 talloc_steal(req, buffer);
294 req->in.size = len;
295 req->in.allocated = req->in.size;
297 req->in.hdr = hdr;
298 req->in.body = hdr+SMB2_HDR_BODY;
299 req->in.body_size = req->in.size - (SMB2_HDR_BODY+NBT_HDR_SIZE);
300 req->status = NT_STATUS(IVAL(hdr, SMB2_HDR_STATUS));
303 NT_STATUS_EQUAL(req->status, STATUS_PENDING)) {
304 req->cancel.can_cancel = true;
305 req->cancel.pending_id = IVAL(hdr, SMB2_HDR_PID);
306 for (i=0; i< req->cancel.do_cancel; i++) {
307 smb2_cancel(req);
313 next_ofs = IVAL(req->in.hdr, SMB2_HDR_NEXT_COMMAND);
315 if (smb2_oob(&req->in, req->in.hdr + next_ofs, SMB2_HDR_BODY + 2)) {
321 req->in.size = NBT_HDR_SIZE + next_ofs;
322 req->in.body_size = req->in.size - (SMB2_HDR_BODY+NBT_HDR_SIZE);
325 if (req->session && req->session->signing_active) {
326 status = smb2_check_signature(&req->in,
327 req->session->session_key);
335 buffer_code = SVAL(req->in.body, 0);
336 req->in.body_fixed = (buffer_code & ~1);
337 req->in.dynamic = NULL;
338 dynamic_size = req->in.body_size - req->in.body_fixed;
340 req->in.dynamic = req->in.body + req->in.body_fixed;
341 if (smb2_oob(&req->in, req->in.dynamic, dynamic_size)) {
348 smb2_setup_bufinfo(req);
350 DEBUG(2, ("SMB2 RECV seqnum=0x%llx\n", (long long)req->seqnum));
351 dump_data(5, req->in.body, req->in.body_size);
376 req->in.hdr + next_ofs,
377 req->in.allocated - req->in.size);
386 DLIST_REMOVE(transport->pending_recv, req);
387 req->state = SMB2_REQUEST_DONE;
388 if (req->async.fn) {
389 req->async.fn(req);
395 if (req) {
396 DLIST_REMOVE(transport->pending_recv, req);
397 req->state = SMB2_REQUEST_ERROR;
398 if (req->async.fn) {
399 req->async.fn(req);
413 struct smb2_request *req = talloc_get_type(private_data, struct smb2_request);
415 if (req->state == SMB2_REQUEST_RECV) {
416 DLIST_REMOVE(req->transport->pending_recv, req);
418 req->status = NT_STATUS_IO_TIMEOUT;
419 req->state = SMB2_REQUEST_ERROR;
420 if (req->async.fn) {
421 req->async.fn(req);
429 static int smb2_request_destructor(struct smb2_request *req)
431 if (req->state == SMB2_REQUEST_RECV) {
432 DLIST_REMOVE(req->transport->pending_recv, req);
461 void smb2_transport_send(struct smb2_request *req)
465 DEBUG(2, ("SMB2 send seqnum=0x%llx\n", (long long)req->seqnum));
466 dump_data(5, req->out.body, req->out.body_size);
468 if (req->transport->compound.missing > 0) {
473 end = req->out.buffer + req->out.size;
479 if (req->out.dynamic == NULL) {
480 req->out.dynamic = end;
483 next_ofs = end - req->out.hdr;
489 status = smb2_grow_buffer(&req->out, pad);
491 req->state = SMB2_REQUEST_ERROR;
492 req->status = status;
495 req->out.size += pad;
497 SIVAL(req->out.hdr, SMB2_HDR_NEXT_COMMAND, next_ofs);
501 if (req->session && req->session->signing_active) {
502 status = smb2_sign_message(&req->out, req->session->session_key);
504 req->state = SMB2_REQUEST_ERROR;
505 req->status = status;
510 if (req->transport->compound.missing > 0) {
511 req->transport->compound.buffer = req->out;
513 status = smb2_transport_raw_send(req->transport,
514 &req->out);
516 req->state = SMB2_REQUEST_ERROR;
517 req->status = status;
521 ZERO_STRUCT(req->out);
523 req->state = SMB2_REQUEST_RECV;
524 DLIST_ADD(req->transport->pending_recv, req);
527 if (req->transport->options.request_timeout) {
528 event_add_timed(req->transport->socket->event.ctx, req,
529 timeval_current_ofs(req->transport->options.request_timeout, 0),
530 smb2_timeout_handler, req);
533 talloc_set_destructor(req, smb2_request_destructor);