Opened 14 years ago

Last modified 13 years ago

#21 accepted enhancement

Write our own IPP server

Reported by: jhamrick Owned by: jhamrick
Priority: blocker Component: server
Keywords: Cc:


(See #13)

After discussing with broglek and quentin, we have come to the conclusion that writing our own IPP server will likely resolve all our problems. We only actually use the queue functionality of CUPS, and none of it's shiny features, so we're using only a small part of this giant piece of software, and it doesn't even work the way we want it to all the time. So, it's probably better to just reimplement that small piece of CUPS. That way, when bugs crop up, we can fix them ourselves instead of looking for a way around it in CUPS. This also automatically fixes the API problem, as we can just send IPP requests to our server (i.e., it includes the API functionality already). In addition, all CUPS commands should still work with our server, as they ultimately just send IPP requests.

Change History (3)

comment:1 Changed 13 years ago by jhamrick

  • Owner set to jhamrick
  • Status changed from new to accepted

comment:2 Changed 13 years ago by geofft

There is something (although not much) to be said for using other people's software if you can. To consider another route, sipbmp3 used LPRng for a while, and there are [

patches to add IPP support to LPRng] on Sourceforge, queued for the next release, I think. It may e worth briefly considering if you want to go that route.

comment:3 Changed 13 years ago by jhamrick

Well, the nice thing about writing our own IPP server is that then we get a whole lot of flexibility with various things that CUPS doesn't support (for example, Send-URI is supported by IPP but not by CUPS, but that would enable us to stream videos without needing to do the echo hack). Using our own handlers for IPP operations will also let us do things like control volume, pause the song, etc., that we wouldn't otherwise be able to do. We're planning to make the server still compatible with the lpr commands, so that shouldn't be an issue. Using someone else's code would be nice in the sense that then we don't have to write it (though I've already written a great deal of the IPP implementation). But I just don't think then we'd have the same amount of flexibility, because when it comes down to it, we don't want to control a printer, we want to control a music player.

Note: See TracTickets for help on using tickets.