Ejemplo n.º 1
0
static int
block_proc_start (CcnetProcessor *processor, int argc, char **argv)
{
    if (verify_session_token (processor, argc, argv) < 0) {
        ccnet_processor_send_response (processor, 
                                       SC_ACCESS_DENIED, SS_ACCESS_DENIED,
                                       NULL, 0);
        ccnet_processor_done (processor, FALSE);
        return -1;
    }
    
    prepare_thread_data(processor, recv_blocks, recv_block_cb);
    ccnet_processor_send_response (processor, "200", "OK", NULL, 0);

    return 0;
}
Ejemplo n.º 2
0
static int
block_proc_start (CcnetProcessor *processor, int argc, char **argv)
{
    SeafileGetblockV2Proc *proc = (SeafileGetblockV2Proc *)processor;
    USE_PRIV;
    
    if (master_block_proc_start(processor, proc->tx_task,
                                "seafile-putblock-v2",
                                &proc->active,
                                &proc->block_bitmap) < 0) {
        ccnet_processor_done (processor, FALSE);
        return -1;
    }

    prepare_thread_data (processor, recv_blocks, got_block_cb,
                         proc->tx_task->repo_id);
    priv->tdata->task = proc->tx_task;

    return 0;
}
Ejemplo n.º 3
0
int main(int argc, char *argv[]) {
   char opts;
   int sockfd, client_sock, portno;
   socklen_t clilen;
   char buffer[MAX_PACK_SIZE];
   char *defname = NULL;
   struct sockaddr_in serv_addr, cli_addr;
   int n;
   if (argc > 5) {
      printf ("Too many arguments\n");
      exit(1);
   }

   if (argc < 3) {    //port is needed 
      fprintf(stderr, "Too few arguments.\n");
      exit(1);
   } 

   while ((opts = getopt(argc, argv, ":p:s:")) != -1) {
      switch (opts) {
      case 's': 
         if ((defname = (char *) malloc(sizeof(char)*strlen(optarg))) == NULL)
            error("Malloc failed");
         defname = optarg;
         break;
      case 'p':
         portno = atoi(optarg);
         if (portno < 1 || portno > MAX_PORT_NUM) {
            printf ("Port entered is an invalid port number.\n");
            exit(1);
         }
         break;
      case '?':
         printf("Urecognized option. Try again.\n");
			exit(1);
      }
   }

   if (defname == NULL) {  
      if ((defname = (char *) malloc(sizeof(char)*strlen(DEFAULT))) == NULL)
         error("Malloc failed");
      defname = DEFAULT;
   }

   rooms = initialize_rooms(defname);
   connected_users = create_list();
   if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
      error("Open socket failed");
   bzero((char *) &serv_addr, sizeof(serv_addr));
   serv_addr.sin_family = AF_INET;
   serv_addr.sin_addr.s_addr = INADDR_ANY;
   serv_addr.sin_port = htons(portno);

   if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) 
   	error("Binding failed");


   /* Accept connections and create threads*/

   listen(sockfd, 3);
   clilen = sizeof(cli_addr);
   pthread_t thread_id;
   pthread_mutex_init(&mutex, NULL);  
   while (client_sock = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen)) {
      int flag = 1;
      int result = setsockopt(client_sock, IPPROTO_TCP, TCP_NODELAY, 
														(char *) &flag, sizeof(int));
      printf("Connection accepted\n");
      Thread_data tdata = prepare_thread_data(client_sock, create_list());
		
      if (pthread_create(&thread_id, NULL, connection_handler, 
                         (void *) &tdata)) {
         perror("could not create thread");
      }
   }
}