GNOME Bugzilla – Bug 703694
libsoup does not support GET when protocol != http or https (i.e., use of protocol alias like daap:)
Last modified: 2013-08-26 15:02:58 UTC
I maintain dmapd (https://www.flyn.org/projects/dmapd/), a server that provides music shares to iTunes and compatible clients. iTunes is odd in that it makes HTTP requests in the form of: GET daap://host:port/path HTTP/1.1 It seems that somewhere between libsoup 2.28.2 and 2.42.2, libsoup began checking the requested protocol for "http:" or "https:" using SOUP_URI_VALID_FOR_HTTP. In the case of "daap:", libsoup returns a 400 error to the client, seemingly without invoking any application callback functions. I would like libsoup to happily process the request above, despite the "daap:". Dan Winship suggested by email changing soup-message-server-io.c so that it is less strict or adding "http-aliases" and "https-aliases" properties to SoupServer.
Created attachment 253058 [details] [review] SoupServer: add :http-aliases and :https-aliases properties Add :http-aliases and :https-aliases properties to SoupServer, to allow it to handle requests like: GET daap://host:port/path HTTP/1.1
could you try this patch? It actually should fix things for you even without you needing to set the property (since it makes the default be to accept all protocols again), but you can also try setting :http-aliases to [ "daap", NULL ]
The patch works fine for me. With it applied to libsoup, dmapd is able to share music with iTunes again. As you said in comment #2, I did not have to make any changes to dmapd after I replaced libsoup.
pushed. will be in 2.43.91