static void send_blocking_reply(char *outbuf, int outsize) { if(outsize > 4) smb_setlen(outbuf,outsize - 4); if (!send_smb(smbd_server_fd(),outbuf)) exit_server("send_blocking_reply: send_smb failed."); }
int cli_set_message(char *buf,int num_words,int num_bytes,bool zero) { if (zero && (num_words || num_bytes)) { memset(buf + smb_size,'\0',num_words*2 + num_bytes); } SCVAL(buf,smb_wct,num_words); SSVAL(buf,smb_vwv + num_words*SIZEOFWORD,num_bytes); smb_setlen(buf,smb_size + num_words*2 + num_bytes - 4); return (smb_size + num_words*2 + num_bytes); }
/**************************************************************************** construct a reply to the incoming packet ****************************************************************************/ static int construct_reply(char *inbuf,char *outbuf,int size,int bufsize, int ProcSockID, int threadid) { int type = CVAL(inbuf,smb_com); int outsize = 0; int msg_type = CVAL(inbuf,0); chain_size[threadid] = 0; if (msg_type != 0) return(reply_special(inbuf,outbuf)); construct_reply_common(inbuf, outbuf); outsize = switch_message(type,inbuf,outbuf,size,bufsize, ProcSockID, threadid); outsize += chain_size[threadid]; if(outsize > 4) smb_setlen(outbuf,outsize - 4); return(outsize); }