diff --git a/exec/commservice.js b/exec/commservice.js
index f6ddef76176324af96abcbcc70b46ac28756a6f3..74949fcca7c87b0d57edbdb1ac713ac835511129 100644
--- a/exec/commservice.js
+++ b/exec/commservice.js
@@ -35,7 +35,7 @@ const CONNECTION_TIMEOUT=	1;//SECONDS
 const CONNECTION_INTERVAL=	60;
 const CONNECTION_ATTEMPTS=	10;
 const MAX_BUFFER=			1024;
-const MAX_RECV=			10240;
+const MAX_RECV=			102400;
 
 var modules=[];
 var servers=[];
@@ -136,6 +136,7 @@ function init_module(module,module_name)
 				log("created server for: " + module_name);
 			}
 		}
+		sfile.close();
 	}
 }
 
@@ -423,13 +424,17 @@ function handle_filesync(socket,query)
 				break;
 			case "TRYRECV":
 				if(!sync_local(socket,module.dir,query)) {
-					send_receipts(query);
+					if(blocking[query.id] && blocking[query.id][query.filemask]) {
+						send_receipts(query);
+					}
 				}
 				break;
 			case "DORECV":
 				if(recv_file(socket,module.dir,query)) {
 					send_updates(socket,query);
-					send_receipts(query);
+					if(blocking[query.id] && blocking[query.id][query.filemask]) {
+						send_receipts(query);
+					}
 				}
 				break;
 			case "DOSEND":
@@ -445,10 +450,11 @@ function handle_filesync(socket,query)
 }
 function sync_remote(socket,dir,query)
 {
-	var files=directory(dir + file_getname(query.filemask));
+	var filemask=dir+file_getname(query.filemask);
+	var files=directory(filemask);
 	if(files.length>0) debug("sending " + files.length + " files",LOG_DEBUG);
 	else {
-		debug("file(s) not found: " + dir + query.filemask,LOG_WARNING);
+		debug("file(s) not found: " + dir + filemask,LOG_WARNING);
 		return false;
 	}
 	for(var f=0;f<files.length;f++) {
@@ -513,15 +519,13 @@ function recv_file(socket,dir,query)
 	}
 	
 	var file=new File(filename + ".tmp");
+	file.base64=true;
 	file.open('wb',true);
 	if(!file.is_open) {
 		log(LOG_WARNING,"error opening file: " + file.name);
 		return false;
 	}
-	
-	while(query.file.length > 0) {
-		file.writeBin(query.file.shift(),1);
-	}
+	file.write(query.file);
 	file.close();
 	
 	file_rename(file.name,filename);
@@ -540,18 +544,18 @@ function compare_dates(local,remote)
 }
 function send_receipts(query)
 {
-	if(blocking[query.id] && blocking[query.id][query.filemask]) {
-		while(blocking[query.id][query.filemask].length) {
-			var receipt=new Packet("FILESYNC");
-			receipt.filemask=query.filemask;
-			blocking[query.id][query.filemask].shift().enqueue(receipt);
-		}
+	while(blocking[query.id][query.filemask].length) {
+		var receipt=new Packet("FILESYNC");
+		receipt.filemask=query.filemask;
+		blocking[query.id][query.filemask].shift().enqueue(receipt);
 	}
 }
 function load_file(filename)
 {
 	var d=new Object();
 	var f=new File(filename);
+	
+	f.base64=true;
 	f.open('rb',true);
 	if(!f.is_open) {
 		log(LOG_WARNING,"error opening file: " + f.name);
@@ -560,11 +564,7 @@ function load_file(filename)
 	d.filesize=file_size(filename);
 	d.filedate=file_date(filename);
 	d.filemask=file_getname(filename);
-	d.file=[];
-	while(1) { 
-		if(f.eof) break; 
-		d.file.push(f.readBin(1)); 
-	}
+	d.file=f.read();
 	f.close();
 	return d;
 }