Author: gmaruzz Date: Thu Dec 4 15:42:15 2008 New Revision: 10599 Log: skypiax: giving timeouts to pipes at least on linux seems to works well. Lets see on win32 Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c Thu Dec 4 15:42:15 2008 @@ -34,8 +34,8 @@ * */ -#define WIN32_SKYPIAX -#define __CYGWIN__ +#undef WIN32_SKYPIAX +#undef __CYGWIN__ #define MOD_SKYPIAX #ifdef MOD_SKYPIAX @@ -689,7 +689,7 @@ int i; if (option_debug > 10) { - DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + WARNINGA("ENTERING FUNC\n", SKYPIAX_P_LOG); } memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; @@ -799,7 +799,7 @@ break; } - DEBUGA_SKYPE("server (I am it) GONE\n", SKYPIAX_P_LOG); + WARNINGA("server (I am it) GONE\n", SKYPIAX_P_LOG); #ifndef WIN32_SKYPIAX close(s); #endif @@ -821,10 +821,10 @@ int a; int i; unsigned int got; - int exit=0; + //int exit=0; if (option_debug > 10) { - DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + WARNINGA("ENTERING FUNC\n", SKYPIAX_P_LOG); } memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; @@ -864,7 +864,7 @@ fd_set fs; struct timeval to; - exit=1; + //exit=1; @@ -898,24 +898,25 @@ len = send(fd, out, got * 2, 0); if (len == 0) { - DEBUGA_SKYPE("Skype server GONE\n", SKYPIAX_P_LOG); + ERRORA("Skype server GONE\n", SKYPIAX_P_LOG); break; } } else { switch_sleep(1000); + //ERRORA("Audio skype pipe give us: %u\n", SKYPIAX_P_LOG, got); } } } - DEBUGA_SKYPE("Skype server GONE\n", SKYPIAX_P_LOG); + ERRORA("Skype server GONE\n", SKYPIAX_P_LOG); #ifndef WIN32_SKYPIAX close(fd); #endif - if (exit) + //if (exit) break; } - DEBUGA_SKYPE("client (I am it) GONE\n", SKYPIAX_P_LOG); + WARNINGA("client (I am it) GONE\n", SKYPIAX_P_LOG); #ifndef WIN32_SKYPIAX close(s); #endif @@ -936,6 +937,8 @@ //rv = switch_file_pipe_create_ex(&readp, &writep, APR_FULL_NONBLOCK, module_pool); rv = switch_file_pipe_create_ex(&p->audiopipe[0], &p->audiopipe[1], 2, module_pool); + rv = switch_file_pipe_timeout_set(p->audiopipe[0], 100000); + //rv = switch_file_pipe_timeout_set(p->audiopipe[1], 10000); //rv = switch_file_pipe_create(&readp, &writep, module_pool); @@ -968,6 +971,8 @@ */ rv = switch_file_pipe_create_ex(&p->audioskypepipe[0], &p->audioskypepipe[1], 2, module_pool); + rv = switch_file_pipe_timeout_set(p->audioskypepipe[0], 100); + //rv = switch_file_pipe_timeout_set(p->audioskypepipe[1], 10000); #ifdef NOTDEF_WIN32_SKYPIAX c = pipe(p->audioskypepipe); if (c) { @@ -1021,9 +1026,9 @@ //if ((samples = read(p->audiopipe[0], buf, SAMPLES_PER_FRAME * sizeof(short))) != 320) if (samples != SAMPLES_PER_FRAME * sizeof(short)) { - DEBUGA_SKYPE("read=====> NOT GOOD samples=%d expected=%d\n", SKYPIAX_P_LOG, samples, - SAMPLES_PER_FRAME * sizeof(short)); - switch_sleep(1000); + if(samples) + DEBUGA_SKYPE("read=====> NOT GOOD samples=%d expected=%d\n", SKYPIAX_P_LOG, samples, SAMPLES_PER_FRAME * sizeof(short)); + //switch_sleep(1000); //do nothing } else { tech_pvt->read_frame.datalen=samples; @@ -2124,7 +2129,7 @@ if (option_debug > 100) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); } - DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + //DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); //switch_sleep(1000000); memset(read_from_pipe, 0, 4096); @@ -2151,7 +2156,7 @@ if (read_from_pipe[i] == '\0') { - //if (option_debug > 101) + if (option_debug > 101) DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG, howmany, i, a, messaggio); @@ -2656,7 +2661,7 @@ if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } - DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + //DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); return 0; }