nix-store --serve: Don't loop forever
nix-store --export takes a tmproot, which can only release by exiting. Substituters don't currently work in a way that could take advantage of the looping, anyway. Signed-off-by: Shea Levy <shea@shealevy.com>
This commit is contained in:
		
							parent
							
								
									3a38d0f356
								
							
						
					
					
						commit
						9488447594
					
				
					 1 changed files with 25 additions and 26 deletions
				
			
		| 
						 | 
					@ -260,32 +260,31 @@ string StoreAPI::makeValidityRegistration(const PathSet & paths,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void StoreAPI::serve(Source & in, Sink & out, bool sign)
 | 
					void StoreAPI::serve(Source & in, Sink & out, bool sign)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    for (string cmd = readString(in); !cmd.empty(); cmd = readString(in)) {
 | 
					    string cmd = readString(in);
 | 
				
			||||||
        if (cmd == "query") {
 | 
					    if (cmd == "query") {
 | 
				
			||||||
            for (cmd = readString(in); !cmd.empty(); cmd = readString(in)) {
 | 
					        for (cmd = readString(in); !cmd.empty(); cmd = readString(in)) {
 | 
				
			||||||
                PathSet paths = readStrings<PathSet>(in);
 | 
					            PathSet paths = readStrings<PathSet>(in);
 | 
				
			||||||
                if (cmd == "have") {
 | 
					            if (cmd == "have") {
 | 
				
			||||||
                    writeStrings(queryValidPaths(paths), out);
 | 
					                writeStrings(queryValidPaths(paths), out);
 | 
				
			||||||
                } else if (cmd == "info") {
 | 
					            } else if (cmd == "info") {
 | 
				
			||||||
                    // !!! Maybe we want a queryPathInfos?
 | 
					                // !!! Maybe we want a queryPathInfos?
 | 
				
			||||||
                    foreach (PathSet::iterator, i, paths) {
 | 
					                foreach (PathSet::iterator, i, paths) {
 | 
				
			||||||
                        ValidPathInfo info = queryPathInfo(*i);
 | 
					                    ValidPathInfo info = queryPathInfo(*i);
 | 
				
			||||||
                        writeString(info.path, out);
 | 
					                    writeString(info.path, out);
 | 
				
			||||||
                        writeString(info.deriver, out);
 | 
					                    writeString(info.deriver, out);
 | 
				
			||||||
                        writeStrings(info.references, out);
 | 
					                    writeStrings(info.references, out);
 | 
				
			||||||
                        // !!! Maybe we want compression?
 | 
					                    // !!! Maybe we want compression?
 | 
				
			||||||
                        writeLongLong(info.narSize, out); // downloadSize
 | 
					                    writeLongLong(info.narSize, out); // downloadSize
 | 
				
			||||||
                        writeLongLong(info.narSize, out);
 | 
					                    writeLongLong(info.narSize, out);
 | 
				
			||||||
                    }
 | 
					                }
 | 
				
			||||||
                    writeString("", out);
 | 
					                writeString("", out);
 | 
				
			||||||
                } else
 | 
					            } else
 | 
				
			||||||
                    throw Error(format("Unknown serve query `%1%'") % cmd);
 | 
					                throw Error(format("Unknown serve query `%1%'") % cmd);
 | 
				
			||||||
            }
 | 
					        }
 | 
				
			||||||
        } else if (cmd == "substitute")
 | 
					    } else if (cmd == "substitute")
 | 
				
			||||||
            exportPath(readString(in), sign, out);
 | 
					        exportPath(readString(in), sign, out);
 | 
				
			||||||
        else
 | 
					    else
 | 
				
			||||||
            throw Error(format("Unknown serve command `%1%'") % cmd);
 | 
					        throw Error(format("Unknown serve command `%1%'") % cmd);
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue