[Xfce4-commits] <eatmonkey:aria2-xml-rpc> Add support for local sever with aria2 < 1.7

Mike Massonnet noreply at xfce.org
Sat Feb 6 19:16:02 CET 2010


Updating branch refs/heads/aria2-xml-rpc
         to 7b351763424241bfd2030b1932117e6f51bf1055 (commit)
       from 7f672e1e19dfed24056a92be0492225f38e7c776 (commit)

commit 7b351763424241bfd2030b1932117e6f51bf1055
Author: Mike Massonnet <mmassonnet at gmail.com>
Date:   Sat Feb 6 17:59:25 2010 +0100

    Add support for local sever with aria2 < 1.7
    
    Try to spawn a server with command arguments from aria2 1.7+ and if it
    doesn't answer to XML-RPC requests, re-run a server with lesser
    arguments that work with aria2 1.4/1.6.

 src/eataria2.rb |   53 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/src/eataria2.rb b/src/eataria2.rb
index 0682f46..28b2d55 100644
--- a/src/eataria2.rb
+++ b/src/eataria2.rb
@@ -124,24 +124,22 @@ class Eat::Aria2 < GLib::Object
 				# Cleanup log file
 				FileUtils.rm(@confdir+"/aria2.log", :force => true)
 				# Launch aria2c process
-				command = "aria2c --disable-ipv6=true " \
-					"--enable-xml-rpc --xml-rpc-listen-port=#{@port} " \
-					"--conf-path=#{@confdir}/aria2.conf --log=#{@confdir}/aria2.log --log-level=notice " \
-					"--dht-file-path=#{@confdir}/dht.dat"
-				@@pid = Process.spawn(command, :pgroup=>true, :chdir=>ENV['HOME'],
-						STDOUT=>"/dev/null", STDIN=>"/dev/null")
-				Process.detach(@@pid)
-				debug("started server", command, @@pid)
-				# Wait for the server to respond properly to requests
-				debug("waiting for a first response...")
-				Timeout::timeout(5) do
-					begin
-						begin
-							result = @@client.call("aria2.getVersion")
-						rescue
-						end
-						sleep 1 if result == nil
-					end while result == nil
+				begin
+					command = "aria2c --disable-ipv6=true " \
+						"--enable-xml-rpc --xml-rpc-listen-port=#{@port} " \
+						"--conf-path=#{@confdir}/aria2.conf --log=#{@confdir}/aria2.log --log-level=notice " \
+						"--dht-file-path=#{@confdir}/dht.dat"
+					@@pid = spawn_server(command)
+				rescue Timeout::Error
+				begin
+					# Retry with fewer arguments for aria2 < 1.7
+					command = "aria2c --enable-xml-rpc --xml-rpc-listen-all --xml-rpc-listen-port=#{@port} " \
+						"--conf-path=#{@confdir}/aria2.conf --log=#{@confdir}/aria2.log --log-level=notice"
+					@@pid = spawn_server(command)
+				rescue Timeout::Error
+					@@pid = 0
+					raise "Failed to get positive response from aria2"
+				end
 				end
 				# Store pid in a file
 				begin
@@ -159,6 +157,25 @@ class Eat::Aria2 < GLib::Object
 		end
 	end
 
+	def spawn_server(command)
+		pid = Process.spawn(command, :pgroup=>true, :chdir=>ENV['HOME'],
+				STDOUT=>"/dev/null", STDIN=>"/dev/null")
+		Process.detach(pid)
+		# Wait for the server to respond properly to requests
+		debug("waiting for a first response...")
+		Timeout::timeout(5) do
+			begin
+				begin
+					result = @@client.call("aria2.getVersion")
+				rescue
+				end
+				sleep 1 if result == nil
+			end while result == nil
+		end
+		debug("started server", command, pid)
+		pid
+	end
+
 	def call(method, *args)
 		begin
 			result = @@client.call(method, *args)



More information about the Xfce4-commits mailing list