Update of /cvsroot/monetdb/pathfinder/runtime
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv31043
Modified Files:
Tag: XQuery_0-16
shttpd.c shttpd.h xrpc_server.mx
Log Message:
implementation of
- xrpc_open (only listen to localhost or not)
- xrpc_port (default port nr)
- xrpc_trusted (prefix of module locations)
- xrpc_admin (hosts that have (web) access to the functions defined in
<datadir>/MonetDB/xrpc/admin/admin.xq)
Index: shttpd.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/shttpd.c,v
retrieving revision 1.19.4.1
retrieving revision 1.19.4.2
diff -u -d -r1.19.4.1 -r1.19.4.2
--- shttpd.c 15 Feb 2007 01:46:13 -0000 1.19.4.1
+++ shttpd.c 21 Feb 2007 16:22:49 -0000 1.19.4.2
@@ -332,11 +332,11 @@
* change enum that goes below!
*/
{'d', "document_root", 0, NULL, OPT_STR, {0}, NULL },
- {'i', "index_files", 0, NULL, OPT_STR, {0}, INDEX_FILES },
- {'D', "list_directories",0,NULL, OPT_BOOL, {0}, "1" },
- {'c', "cgi_extention", 0, NULL, OPT_STR, {0}, CGI_EXTENTION },
- {'N', "server_name", 0, NULL, OPT_STR, {0}, AUTH_REALM },
- {'p', "listen_port", 0, NULL, OPT_INT, {0}, LISTEN_PORT },
+ {'i', "index_files", 1, NULL, OPT_STR, {INDEX_FILES}, INDEX_FILES
},
+ {'D', "list_directories",1,NULL, OPT_BOOL, {0}, "0" },
+ {'c', "cgi_extention", 1, NULL, OPT_STR, {CGI_EXTENTION},
CGI_EXTENTION },
+ {'N', "server_name", 1, NULL, OPT_STR, {AUTH_REALM}, AUTH_REALM
},
+ {'p', "listen_port", 1, NULL, OPT_INT, {LISTEN_PORT}, LISTEN_PORT
},
{'l', "access_log", 0, NULL, OPT_STR, {0}, NULL },
{'e', "error_log", 0, NULL, OPT_STR, {0}, NULL },
{'m', "mime_types", 0, NULL, OPT_STR, {0}, NULL },
@@ -346,7 +346,7 @@
{'I', "inetd_mode", 0, NULL, OPT_BOOL, {0}, "0" },
{'u', "runtime_uid", 0, NULL, OPT_STR, {0}, NULL },
{'V', "show_stats", 0, NULL, OPT_BOOL, {0}, "0" },
- {'C', "config_file", 0, NULL, OPT_STR, {0}, CONFIG },
+ {'C', "config_file", 1, NULL, OPT_STR, {CONFIG}, CONFIG
},
{0, NULL, 0, NULL, OPT_BOOL, {0}, NULL }
};
@@ -1080,7 +1080,7 @@
* Setup listening socket on given port, return socket
*/
shttpd_socket
-shttpd_open_port(int port)
+shttpd_open_port(int port, int accept_any)
{
shttpd_socket ret;
SOCKET sock;
@@ -1092,10 +1092,10 @@
if (port == 0)
port = INTOPT(OPT_LISTENPORT);
- sa.len = sizeof(sa.u.sin);
- sa.u.sin.sin_family = AF_INET;
- sa.u.sin.sin_port = htons((uint16_t) port);
- sa.u.sin.sin_addr.s_addr = htonl(INADDR_ANY);
+ sa.len = sizeof(sa.u.sin);
+ sa.u.sin.sin_family = AF_INET;
+ sa.u.sin.sin_port = htons((uint16_t) port);
+ sa.u.sin.sin_addr.s_addr =
accept_any?htonl(INADDR_ANY):htonl(INADDR_LOOPBACK);
if ((sock = socket(PF_INET, SOCK_STREAM, 6)) == -1)
elog(ERR_FATAL, "shttpd_open_port: socket: %s",strerror(ERRNO));
@@ -3242,6 +3242,12 @@
return arg->connection->uri;
}
+struct in_addr
+shttpd_get_inAddr(struct shttpd_callback_arg *arg)
+{
+ return arg->connection->sa.u.sin.sin_addr;
+}
+
void
shttpd_finish(struct shttpd_callback_arg *arg)
{
Index: shttpd.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/shttpd.h,v
retrieving revision 1.6.6.1
retrieving revision 1.6.6.2
diff -u -d -r1.6.6.1 -r1.6.6.2
--- shttpd.h 15 Feb 2007 01:46:13 -0000 1.6.6.1
+++ shttpd.h 21 Feb 2007 16:22:50 -0000 1.6.6.2
@@ -159,7 +159,7 @@
extern void shttpd_setopt(const char *variable, const char *value);
extern void shttpd_addmimetype(const char *ext, const char *mime);
extern void shttpd_register_mountpoint(const char *uri, const char
*system_path);
-extern shttpd_socket shttpd_open_port(int port);
+extern shttpd_socket shttpd_open_port(int port, int accept_any);
extern void shttpd_register_url(const char *url,
shttpd_callback_t callback, void
*callback_data);
extern void shttpd_protect_url(const char *url, const char *file);
@@ -172,6 +172,7 @@
extern char *shttpd_get_method(struct shttpd_callback_arg *arg);
extern char *shttpd_get_uri(struct shttpd_callback_arg *arg);
extern int shttpd_get_socket(struct shttpd_callback_arg *arg);
+extern struct in_addr shttpd_get_inAddr(struct shttpd_callback_arg *arg);
extern void shttpd_finish(struct shttpd_callback_arg *arg);
#ifdef MT
Index: xrpc_server.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_server.mx,v
retrieving revision 1.7.2.7
retrieving revision 1.7.2.8
diff -u -d -r1.7.2.7 -r1.7.2.8
--- xrpc_server.mx 17 Feb 2007 01:10:38 -0000 1.7.2.7
+++ xrpc_server.mx 21 Feb 2007 16:22:50 -0000 1.7.2.8
@@ -40,61 +40,123 @@
@- HTTP server function(s)
@m
-.COMMAND httpd_start(int port, str option) : void = CMDhttpd_start;
+.COMMAND rpcd_start(int port, bit open, str options) : void = CMDrpcd_start;
"Start the HTTP server for RPC calls on the specified port."
.EPILOGUE = xrpc_epilogue;
.END xrpc_server;
@mil
[...1118 lines suppressed...]
/* Open listening socket */
- ctx = shttpd_open_port(*port);
+ ctx = shttpd_open_port(xrpc_port, *open);
+ listen_socket = ctx.sock;
/* Serve connections infinitely until someone kills us */
for ( ; rpcd_running; ) shttpd_poll(&ctx, 200);
@@ -905,8 +1199,10 @@
return GDK_SUCCEED;
}
-void xrpc_epilogue() {
+void xrpc_epilogue()
+{
shttpd_fini(); /* Shut down the HTTP server. */
rpcd_running = 0; /* Stop RPC server */
+ close(listen_socket);
}
/* vim:set shiftwidth=4 expandtab: */
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins