mirror of
				https://gogs.blitter.com/RLabs/xs
				synced 2024-08-14 10:26:42 +00:00 
			
		
		
		
	More throughput-friendly hack (just delay at very end vs. each packet)
Signed-off-by: Russ Magee <rmagee@gmail.com>
This commit is contained in:
		
							parent
							
								
									aaa5a4b3d5
								
							
						
					
					
						commit
						25c3f6cae0
					
				
					 2 changed files with 7 additions and 4 deletions
				
			
		|  | @ -26,6 +26,7 @@ import ( | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"sync" | 	"sync" | ||||||
| 	"syscall" | 	"syscall" | ||||||
|  | 	"time" | ||||||
| 	"unsafe" | 	"unsafe" | ||||||
| 
 | 
 | ||||||
| 	"blitter.com/go/goutmp" | 	"blitter.com/go/goutmp" | ||||||
|  | @ -796,6 +797,8 @@ func main() { | ||||||
| 					} else { | 					} else { | ||||||
| 						logger.LogNotice(fmt.Sprintf("[Command completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck | 						logger.LogNotice(fmt.Sprintf("[Command completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck | ||||||
| 					} | 					} | ||||||
|  | 					// TODO: Test this with huge files.. see Bug #22 - do we need to | ||||||
|  | 					//   sync w/sender (client) that we've gotten all data? | ||||||
| 					hc.SetStatus(xsnet.CSOType(cmdStatus)) | 					hc.SetStatus(xsnet.CSOType(cmdStatus)) | ||||||
| 
 | 
 | ||||||
| 					// Send CSOExitStatus *before* client closes channel | 					// Send CSOExitStatus *before* client closes channel | ||||||
|  | @ -816,6 +819,10 @@ func main() { | ||||||
| 						// Returned hopefully via an EOF or exit/logout; | 						// Returned hopefully via an EOF or exit/logout; | ||||||
| 						logger.LogNotice(fmt.Sprintf("[Command completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck | 						logger.LogNotice(fmt.Sprintf("[Command completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck | ||||||
| 					} | 					} | ||||||
|  | 					// HACK: Bug #22: (xc) Need to wait for rcvr to get final data | ||||||
|  | 					// TODO: Await specific msg from client to inform they have gotten all data from the tarpipe | ||||||
|  | 					time.Sleep(time.Duration(900 * time.Millisecond)) // Let rcvr set this on setup? | ||||||
|  | 
 | ||||||
| 					// Clear current op so user can enter next, or EOF | 					// Clear current op so user can enter next, or EOF | ||||||
| 					rec.SetOp([]byte{0}) | 					rec.SetOp([]byte{0}) | ||||||
| 					hc.SetStatus(xsnet.CSOType(cmdStatus)) | 					hc.SetStatus(xsnet.CSOType(cmdStatus)) | ||||||
|  |  | ||||||
|  | @ -1320,10 +1320,6 @@ func (hc *Conn) WritePacket(b []byte, ctrlStatOp byte) (n int, err error) { | ||||||
| 	hmacOut = hc.wm.Sum(nil)[0:HMAC_CHK_SZ] | 	hmacOut = hc.wm.Sum(nil)[0:HMAC_CHK_SZ] | ||||||
| 
 | 
 | ||||||
| 	//log.Printf("  (%08x> HMAC(o):%s\r\n", payloadLen, hex.EncodeToString(hmacOut)) | 	//log.Printf("  (%08x> HMAC(o):%s\r\n", payloadLen, hex.EncodeToString(hmacOut)) | ||||||
| 	// HACK: Bug #22: (xc) Need flow control so sender can't overwhelm rcvr with data. |  | ||||||
| 	if payloadLen > 8192 { |  | ||||||
| 		time.Sleep(time.Duration(10 * time.Millisecond)) // Let rcvr set this on setup? |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	var wb bytes.Buffer | 	var wb bytes.Buffer | ||||||
| 	// The StreamWriter acts like a pipe, forwarding whatever is | 	// The StreamWriter acts like a pipe, forwarding whatever is | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue