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; }
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; }
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"); } } }