So what interface does this "server" of yours currently expose, and how far can you change that if necessary? For example, if the interface is or includes some form of inter-process communication, you may want to proxy from HTTP to this with a separate process (some general purpose higher-level language such as Perl, Python or Ruby should ease that); if you can embed one of these interpreters (or some alternative ones such as LUA or Tcl) that would work, too; if your server exposes a C-callable interface (and lives in a DLL or a static library) you could use SWIG to wrap it for the purpose of interfacing higher level languages; and so on, and so forth.
The one general suggestion would be to use a higher-level language as a buffer between the C code in your existing server and the HTTP interface you want to offer -- it WILL make things much easier than trying to have C carry all the weight, in the long run.