Some cleanup
The proxy function still keeps bothering me.
This commit is contained in:
		
							parent
							
								
									dddbc5556e
								
							
						
					
					
						commit
						61e3c68cc8
					
				
							
								
								
									
										44
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								main.go
									
									
									
									
									
								
							| @ -289,7 +289,19 @@ func proxy(w http.ResponseWriter, req *http.Request) { | |||||||
| 
 | 
 | ||||||
| 	// dataProc may return less data near the end of a subfile, so we give it | 	// dataProc may return less data near the end of a subfile, so we give it | ||||||
| 	// a maximum count of bytes to return at once and do our own buffering. | 	// a maximum count of bytes to return at once and do our own buffering. | ||||||
| 	var queuedMetaUpdate, queuedChunk []byte | 	var queuedMetaUpdate, queuedData []byte | ||||||
|  | 	writeMeta := func() error { | ||||||
|  | 		if !wantMeta { | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		var meta [1 + 16*255]byte | ||||||
|  | 		meta[0] = byte((copy(meta[1:], queuedMetaUpdate) + 15) / 16) | ||||||
|  | 		queuedMetaUpdate = nil | ||||||
|  | 
 | ||||||
|  | 		_, err := bufrw.Write(meta[:1+int(meta[0])*16]) | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
| 	for { | 	for { | ||||||
| 		select { | 		select { | ||||||
| 		case title := <-metaChan: | 		case title := <-metaChan: | ||||||
| @ -298,31 +310,17 @@ func proxy(w http.ResponseWriter, req *http.Request) { | |||||||
| 			if !ok { | 			if !ok { | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 
 | 			missing := metaint - len(queuedData) | ||||||
| 			space := metaint - len(queuedChunk) | 			if len(chunk) < missing { | ||||||
| 			if space > len(chunk) { | 				queuedData = append(queuedData, chunk...) | ||||||
| 				space = len(chunk) | 				continue | ||||||
| 			} | 			} | ||||||
| 
 | 			queuedData = append(queuedData, chunk[:missing]...) | ||||||
| 			queuedChunk = append(queuedChunk, chunk[:space]...) | 			if _, err := bufrw.Write(queuedData); err != nil { | ||||||
| 			if len(queuedChunk) < metaint { |  | ||||||
| 				break |  | ||||||
| 			} |  | ||||||
| 			if _, err := bufrw.Write(queuedChunk); err != nil { |  | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 
 | 			queuedData = chunk[missing:] | ||||||
| 			queuedChunk = chunk[space:] | 			if writeMeta() != nil || bufrw.Flush() != nil { | ||||||
| 			if wantMeta { |  | ||||||
| 				var meta [1 + 16*255]byte |  | ||||||
| 				meta[0] = byte((copy(meta[1:], queuedMetaUpdate) + 15) / 16) |  | ||||||
| 				queuedMetaUpdate = nil |  | ||||||
| 
 |  | ||||||
| 				if _, err := bufrw.Write(meta[:1+int(meta[0])*16]); err != nil { |  | ||||||
| 					return |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			if err := bufrw.Flush(); err != nil { |  | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user