public static void DoServerReceive(ClientInfo cInfo, string[] args) { Options options = cInfo.Options; IOStream f = cInfo.IoStream; if (options.verbose > 2) { Log.Write("Server receive starting"); } if (options.amDaemon && config.ModuleIsReadOnly(options.ModuleId)) { MainClass.Exit("ERROR: module " + config.GetModuleName(options.ModuleId) + " is read only", cInfo); return; } f.IOStartBufferingIn(); if (options.deleteMode && !options.deleteExcluded) { Exclude excl = new Exclude(options); excl.ReceiveExcludeList(f); } FileList fList = new FileList(cInfo.Options); List <FileStruct> fileList = fList.receiveFileList(cInfo); DoReceive(cInfo, fileList, null); }
static void DoServerSender(ClientInfo clientInfo, string[] args) { string dir = args[0]; IOStream ioStream = clientInfo.IoStream; Options options = clientInfo.Options; if (options.verbose > 2) { Log.Write("Server sender starting"); } if (options.amDaemon && config.ModuleIsWriteOnly(options.ModuleId)) { MainClass.Exit("ERROR: module " + config.GetModuleName(options.ModuleId) + " is write only", clientInfo); return; } if (!options.relativePaths && !Util.pushDir(dir)) { MainClass.Exit("Push_dir#3 " + dir + "failed", clientInfo); return; } FileList fList = new FileList(options); List <FileStruct> fileList = fList.sendFileList(clientInfo, args); if (options.verbose > 3) { Log.WriteLine("File list sent"); } if (fileList.Count == 0) { MainClass.Exit("File list is empty", clientInfo); return; } ioStream.IOStartBufferingIn(); ioStream.IOStartBufferingOut(); Sender sender = new Sender(options); sender.SendFiles(fileList, clientInfo); ioStream.Flush(); MainClass.Report(clientInfo); if (options.protocolVersion >= 24) { ioStream.readInt(); } ioStream.Flush(); }