示例#1
0
void
doit (void)
{
  pid_t child;

  global_start ();
  if (error_count)
    return;

  child = fork ();
  if (child < 0)
    {
      perror ("fork");
      fail ("fork");
      return;
    }

  if (child)
    {
      int status;
      /* parent */
      server ();
      wait (&status);
    }
  else
    client ();

  global_stop ();
}
示例#2
0
void
doit (void)
{
  int i;

  for (i = 0; resume_tests[i].desc; i++)
    {
      int client_sds[SESSIONS], server_sds[SESSIONS];
      int j;

      printf ("%s\n", resume_tests[i].desc);

      for (j = 0; j < SESSIONS; j++)
        {
          int sockets[2];

          err = socketpair (AF_UNIX, SOCK_STREAM, 0, sockets);
          if (err == -1)
            {
              perror ("socketpair");
              fail ("socketpair failed\n");
              return;
            }

          server_sds[j] = sockets[0];
          client_sds[j] = sockets[1];
        }

      child = fork ();
      if (child < 0)
        {
          perror ("fork");
          fail ("fork");
          return;
        }

      if (child)
        {
          int status;
          /* parent */
          server (server_sds, &resume_tests[i]);
          wait (&status);
          if (WEXITSTATUS(status) > 0)
            error_count++;
          global_stop ();
        }
      else
        {
          client (client_sds, &resume_tests[i]);
          gnutls_global_deinit ();
          if (error_count)
            exit(1);
          exit (0);
        }
    }
}
示例#3
0
void doit(void)
{
	int i, err;

	signal(SIGCHLD, SIG_IGN);
	signal(SIGPIPE, SIG_IGN);

	generate_dh_params();

	for (i = 0; resume_tests[i].desc; i++) {
		int client_sds[SESSIONS], server_sds[SESSIONS];
		int j;

		printf("%s\n", resume_tests[i].desc);

		for (j = 0; j < SESSIONS; j++) {
			int sockets[2];

			err = socketpair(AF_UNIX, SOCK_STREAM, 0, sockets);
			if (err == -1) {
				perror("socketpair");
				fail("socketpair failed\n");
				return;
			}

			server_sds[j] = sockets[0];
			client_sds[j] = sockets[1];
		}

		child = fork();
		if (child < 0) {
			perror("fork");
			fail("fork");
			return;
		}

		if (child) {
			int status = 0;
			/* parent */
			for (j = 0; j < SESSIONS; j++)
				close(client_sds[j]);
			server(server_sds, &resume_tests[i]);
			wait(&status);
			check_wait_status(status);
		} else {
			for (j = 0; j < SESSIONS; j++)
				close(server_sds[j]);
			client(client_sds, &resume_tests[i]);
			gnutls_global_deinit();
			exit(0);
		}
	}
	global_stop();
}
示例#4
0
文件: resume.c 项目: intgr/gnutls
void
doit (void)
{
  int i;

  for (i = 0; resume_tests[i].desc; i++)
    {
      printf ("%s\n", resume_tests[i].desc);

      global_start ();
      if (error_count)
        return;

      child = fork ();
      if (child < 0)
        {
          perror ("fork");
          fail ("fork");
          return;
        }

      if (child)
        {
          int status;
          /* parent */
          server (&resume_tests[i]);
          wait (&status);
          if (WEXITSTATUS(status) > 0)
            error_count++;
          global_stop ();
        }
      else
        {
          client (&resume_tests[i]);
          gnutls_global_deinit ();
          if (error_count)
            exit(1);
          exit (0);
        }
    }
}