Beispiel #1
0
void test5(int c) {
	Chan **ca = mkchan(c, 8);

	changeNproc(2);
	go(  sel(ca[4], ca[5], ca[6], ca[7], ca[0], ca[1], ca[2], ca[3]) );
	go(  sel(ca[0], ca[1], ca[2], ca[3], ca[4], ca[5], ca[6], ca[7]) );
}
Beispiel #2
0
// select send to select recv
void test4(int c) {
	Chan **ca = mkchan(c, 4);

	changeNproc(2);
	go(  sel(nc, nc, nc, nc, ca[0], ca[1], ca[2], ca[3]) );
	go(  sel(ca[0], ca[1], ca[2], ca[3], nc, nc, nc, nc) );
}
Beispiel #3
0
__attribute__((unused)) static void fstest_task(void) {
	int chan;
	char path[PATH_MAX+1];
	printf("path_max test\n");
	memset(path, 'a', PATH_MAX);
	path[PATH_MAX] = 0;
	printf(" mkchan: %d\n", mkchan(ROOT_DIRFD, path));
	printf(" open: %d\n", chan=open(ROOT_DIRFD, path));
	printf(" rmchan: %d\n", rmchan(ROOT_DIRFD, path));
	printf(" close: %d\n", close(chan));
	for(int i=0; i<100; ++i) {
		sprintf(path, "/tmp/test%d", i);
		ASSERTNOERR(mkchan(ROOT_DIRFD, path));
		ASSERTNOERR(chan=open(ROOT_DIRFD, path));
		ASSERTNOERR(rmchan(ROOT_DIRFD, path));
		ASSERTNOERR(close(chan));
	}
}
Beispiel #4
0
// select send to direct recv
void test3(int c) {
	Chan **ca = mkchan(c, 4);

	changeNproc(4);
    go(  myRecv(ca[0]) );
    go(  myRecv(ca[1]) );
    go(  myRecv(ca[2]) );
    go(  myRecv(ca[3]) );
    
	changeNproc(1);
    
    go(  sel(nc, nc, nc, nc, ca[0], ca[1], ca[2], ca[3]) );
}
Beispiel #5
0
// direct send to select recv
void test2(int c) {
	Chan **ca = mkchan(c, 4);

	changeNproc(4);
    
    go(  mySend(ca[0]) );
    go(  mySend(ca[1]) );
    go(  mySend(ca[2]) );
    go(  mySend(ca[3]) );

	changeNproc(1);
    
    go(  sel(ca[0], ca[1], ca[2], ca[3], nc, nc, nc, nc) );
}
Beispiel #6
0
void test6(int c) {
	Chan **ca = mkchan(c, 12);

	changeNproc(4);
	go(  mySend(ca[4]) );
	go(  mySend(ca[5]) );
	go(  mySend(ca[6]) );
	go(  mySend(ca[7]) );

	changeNproc(4);
	go(  myRecv(ca[8]) );
	go(  myRecv(ca[9]) );
	go(  myRecv(ca[10]) );
	go(  myRecv(ca[11]) );

	changeNproc(2);
	go(  sel(ca[4], ca[5], ca[6], ca[7], ca[0], ca[1], ca[2], ca[3]) );
	go(  sel(ca[0], ca[1], ca[2], ca[3], ca[8], ca[9], ca[10], ca[11]) );
}
Beispiel #7
0
unsigned int cmd_join(callbackp *callbacki)
{
	CHANNEL *jchan;
	RAW *newraw;
	json *jlist;
	BANNED *blist;
	
	if ((jchan = getchan(callbacki->param[2], callbacki->g_ape)) == NULL) {
		jchan = mkchan(callbacki->param[2], "Default%20Topic", callbacki->g_ape);
		
		if (jchan == NULL) {
			
			send_error(callbacki->call_user, "CANT_JOIN_CHANNEL", "202", callbacki->g_ape);
			
		} else {
		
			join(callbacki->call_user, jchan, callbacki->g_ape);
		}
	
	} else if (isonchannel(callbacki->call_user, jchan)) {
		
		send_error(callbacki->call_user, "ALREADY_ON_CHANNEL", "100", callbacki->g_ape);

	} else {
		blist = getban(jchan, callbacki->call_user->ip);
		if (blist != NULL) {
			jlist = NULL;
			
			set_json("reason", blist->reason, &jlist);
			set_json("error", "YOU_ARE_BANNED", &jlist);
			/*
				TODO: Add Until
			*/
			newraw = forge_raw(RAW_ERR, jlist);
			
			post_raw(newraw, callbacki->call_user, callbacki->g_ape);
		} else {
			join(callbacki->call_user, jchan, callbacki->g_ape);
		}
	}
	return (FOR_NOTHING);
}
Beispiel #8
0
// run all tests with specified buffer size
void tests(int c) {
	Chan **ca = mkchan(c, 4);
	test1(ca[0]);
	test1(ca[1]);
	test1(ca[2]);
	test1(ca[3]);
	myWait();

	test2(c);
	myWait();

	test3(c);
	myWait();

	test4(c);
	myWait();
    
	test5(c);
	myWait();

	test6(c);
	myWait();
}