[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r30832 - msh/src
From: |
gnunet |
Subject: |
[GNUnet-SVN] r30832 - msh/src |
Date: |
Wed, 20 Nov 2013 22:15:38 +0100 |
Author: harsha
Date: 2013-11-20 22:15:37 +0100 (Wed, 20 Nov 2013)
New Revision: 30832
Modified:
msh/src/msh.c
msh/src/mshd.c
Log:
- accept connection before forking
Modified: msh/src/msh.c
===================================================================
--- msh/src/msh.c 2013-11-20 16:56:06 UTC (rev 30831)
+++ msh/src/msh.c 2013-11-20 21:15:37 UTC (rev 30832)
@@ -525,7 +525,7 @@
static void
target_connect ()
{
- struct MSH_MSG_RunCmd *msg;
+ struct MSH_MSG_SessionOpen *msg;
struct GNUNET_CONFIGURATION_Handle *cfg;
uint16_t size;
@@ -537,11 +537,15 @@
ctx_remote.cfg = cfg;
ctx_remote.conn = GNUNET_CLIENT_connect (MSHD_REMOTE, ctx_remote.cfg);
GNUNET_assert (NULL != ctx_remote.conn);
- size = sizeof (struct MSH_MSG_RunCmd) + cmdstr_len;
+ size = sizeof (struct MSH_MSG_SessionOpen);
msg = GNUNET_malloc (size);
msg->header.size = htons (size);
- msg->header.type = htons (MSH_MTYPE_RUNCMD);
- (void) memcpy (msg->cmd, cmdstr, cmdstr_len);
+ msg->header.type = htons (MSH_MTYPE_SESSION_OPEN);
+ //(void) memcpy (msg->cmd, cmdstr, cmdstr_len);
+ if (!disable_pty && can_pty)
+ msg->type = htonl (MSH_SESSION_TYPE_INTERACTIVE);
+ else
+ msg->type = htonl (MSH_SESSION_TYPE_NONINTERACTIVE);
queue_message (&ctx_remote, &msg->header);
GNUNET_CLIENT_receive (ctx_remote.conn, &dispatch, &ctx_remote,
GNUNET_TIME_UNIT_FOREVER_REL);
Modified: msh/src/mshd.c
===================================================================
--- msh/src/mshd.c 2013-11-20 16:56:06 UTC (rev 30831)
+++ msh/src/mshd.c 2013-11-20 21:15:37 UTC (rev 30832)
@@ -459,26 +459,27 @@
* it then forks and execs the remote command.
*/
static pid_t
-spawn_worker ()
+spawn_worker (struct GNUNET_CONNECTION_Handle *conn)
{
- struct GNUNET_NETWORK_Handle *sock;
- struct GNUNET_CONNECTION_Handle *conn;
pid_t ret;
+ int listen_fd;
ret = fork ();
if (0 != ret)
+ {
+ GNUNET_CONNECTION_destroy (conn);
return ret;
+ }
/* Child process continues here */
GNUNET_assert (MODE_SERV == mode);
- GNUNET_assert (NULL != listen_socket);
GNUNET_SCHEDULER_cancel (shutdown_task);
shutdown_task = GNUNET_SCHEDULER_NO_TASK;
do_shutdown (NULL, NULL);
- sock = GNUNET_NETWORK_socket_accept (listen_socket, NULL, NULL);
- conn = GNUNET_CONNECTION_create_from_existing (sock);
mode = MODE_WORKER;
init_daemon_server ();
daemon_server_add_connection (conn);
+ shutdown_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
+ &do_shutdown, NULL);
return 0;
}
@@ -519,7 +520,8 @@
GNUNET_CONTAINER_DLL_insert_tail (rhead, rtail, rctx);
break;
case MODE_SERV:
- pid = spawn_worker ();
+ conn = GNUNET_CONNECTION_create_from_accept (NULL, NULL, listen_socket);
+ pid = spawn_worker (conn);
if (-1 == pid)
{
GNUNET_break (0);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r30832 - msh/src,
gnunet <=