6 #include "gmediaserver.h"
7 +#include "webserver.h"
8 #include "schemas/MediaServer.h"
10 #define GMEDIASERVER_SSDP_PAUSE 100
11 @@ -265,7 +266,7 @@ handle_get_var_request(struct Upnp_State
12 say(3, _("Event device UDN: %s\n"), quotearg(request->DevUDN));
13 say(3, _("Event service ID: %s\n"), quotearg(request->ServiceID));
14 say(3, _("Event variable name: %s\n"), quotearg(request->StateVarName));
15 - say(3, _("Event source: %s\n"), inet_ntoa(request->CtrlPtIPAddr));
16 + say(3, _("Event source: %s\n"), inet_ntoa((*(struct sockaddr_in *)&request->CtrlPtIPAddr).sin_addr));
18 if (strcmp(request->DevUDN, device_udn) != 0) {
19 say(1, _("Discarding event - event device UDN (%s) not recognized\n"), quotearg(request->DevUDN));
20 @@ -306,7 +307,7 @@ handle_action_request(struct Upnp_Action
21 say(3, _("Event device UDN: %s\n"), quotearg(request->DevUDN));
22 say(3, _("Event service ID: %s\n"), quotearg(request->ServiceID));
23 say(3, _("Event action name: %s\n"), quotearg(request->ActionName));
24 - say(3, _("Event source: %s\n"), inet_ntoa(request->CtrlPtIPAddr));
25 + say(3, _("Event source: %s\n"), inet_ntoa((*(struct sockaddr_in *)&request->CtrlPtIPAddr).sin_addr));
26 say_document(4, _("Event action request:\n"), request->ActionRequest);
28 if (strcmp(request->DevUDN, device_udn) != 0) {
29 @@ -502,9 +503,24 @@ init_upnp(const char *listenip, uint16_t
30 res = UpnpEnableWebserver(TRUE);
31 if (res != UPNP_E_SUCCESS)
32 die(_("cannot enable UPnP web server - %s\n"), upnp_errmsg(res));
33 - res = UpnpSetVirtualDirCallbacks(&virtual_dir_callbacks);
34 - if (res != UPNP_E_SUCCESS)
35 - die(_("cannot set virtual directory callbacks - %s\n"), upnp_errmsg(res));
37 +#define upnp_set_callback(cb, func) \
39 + res = UpnpVirtualDir_set_##cb##Callback(func); \
40 + if (res != UPNP_E_SUCCESS) \
42 + die(_("cannot set virtual directory callbacks - %s\n"), \
43 + upnp_errmsg(res)); \
47 + upnp_set_callback(GetInfo, webserver_get_info);
48 + upnp_set_callback(Open, webserver_open);
49 + upnp_set_callback(Read, webserver_read);
50 + upnp_set_callback(Seek, webserver_seek);
51 + upnp_set_callback(Write, webserver_write);
52 + upnp_set_callback(Close, webserver_close);
54 res = UpnpAddVirtualDir("/files");
55 if (res != UPNP_E_SUCCESS)
56 die(_("cannot add virtual directory for web server - %s\n"), upnp_errmsg(res));
59 @@ -83,7 +83,7 @@ get_entry_from_url(const char *filename)
60 return get_entry_by_id(id);
65 webserver_get_info(const char *filename, struct File_Info *info)
68 @@ -180,7 +180,7 @@ webserver_get_info(const char *filename,
72 -static UpnpWebFileHandle
74 webserver_open(const char *filename, enum UpnpOpenFileMode mode)
77 @@ -277,7 +277,7 @@ webserver_open(const char *filename, enu
83 webserver_read(UpnpWebFileHandle fh, char *buf, size_t buflen)
85 WebServerFile *file = (WebServerFile *) fh;
86 @@ -307,7 +307,7 @@ webserver_read(UpnpWebFileHandle fh, cha
92 webserver_write(UpnpWebFileHandle fh, char *buf, size_t buflen)
94 WebServerFile *file = (WebServerFile *) fh;
95 @@ -317,7 +317,7 @@ webserver_write(UpnpWebFileHandle fh, ch
101 webserver_seek(UpnpWebFileHandle fh, off_t offset, int origin)
103 WebServerFile *file = (WebServerFile *) fh;
104 @@ -396,7 +396,7 @@ webserver_seek(UpnpWebFileHandle fh, off
110 webserver_close(UpnpWebFileHandle fh)
112 WebServerFile *file = (WebServerFile *) fh;
113 @@ -419,12 +419,3 @@ webserver_close(UpnpWebFileHandle fh)
118 -struct UpnpVirtualDirCallbacks virtual_dir_callbacks = {
119 - webserver_get_info,
127 +++ b/src/webserver.h
129 +int webserver_get_info(const char *filename, struct File_Info *info);
130 +UpnpWebFileHandle webserver_open(const char *filename, enum UpnpOpenFileMode mode);
131 +int webserver_read(UpnpWebFileHandle fh, char *buf, size_t buflen);
132 +int webserver_write(UpnpWebFileHandle fh, char *buf, size_t buflen);
133 +int webserver_seek(UpnpWebFileHandle fh, off_t offset, int origin);
134 +int webserver_close(UpnpWebFileHandle fh);
135 --- a/src/contentdir.c
136 +++ b/src/contentdir.c
138 #include <stdint.h> /* Gnulib/C99 */
139 #include <inttypes.h> /* ? */
140 #include <sys/stat.h> /* POSIX */
142 #include "gettext.h" /* Gnulib/gettext */
143 #define _(s) gettext(s)
144 #define N_(s) gettext_noop(s)