Hi, I am a beginner in asterisk. Implementing it in my dept in India using TDM400b card with asterisk, zaptel, libpri version latest of CVS HEAD Callerid on my system is coming tough. Asterisk doesnot finishes the callerid spill and Cancells it. After going through code in Callerid.c and chan_zap.c I found that my line is providing caller id of length 8867. Flow enters in zt_call and generates callerid id of length 8867 from callerid generate in callerid.c *****************snip** zt_call** chan_zap.c************************** if (p->cidspill) p->cidlen = ast_callerid_generate(p->cidspill, ast->cid.cid_name, ast->cid.cid_num, AST_LAW(p)); p->cidpos = 0; send_callerid(p); ************************************************************************ //Flow enters in send callerid in a while loop which checks cidpos<cidlen; Initial cidpos=0 and cidlen =8867 ***************snip** send_callerid*****chan_zap.c**************** // while(p->cidpos < p->cidlen) { if(!p->cidpos) { res = write(p->subs[SUB_REAL].zfd, p->cidspill + p->cidpos, p->cidlen - p->cidpos); //res here comes out to be 160 } if (res < 0) { if (errno == EAGAIN) return 0; else { ast_log(LOG_WARNING, "write failed: %s\n", strerror(errno)); return -1; } } if (!res) return 0; // res increments pos by 160 p->cidpos += res; } ************************************************************************* The strange thing happens here when loop is executed 35-37 times cidpos is inreased to near about 5700 < 8867 and suddenly control gets in zt_handle_event function in a switch case statement and cancells the callerid spill and continues. ***********snip***zt_handle_event***chan_zap.c********************* case ZT_EVENT_RINGEROFF: if (p->inalarm) break; if (p->radio) break; ast->rings++; if ((ast->rings > p->cidrings) && (p->cidspill)) { ast_log(LOG_WARNING, "Didn't finish Caller-ID spill. Cancelling.\n"); free(p->cidspill); p->cidspill = NULL; p->callwaitcas = 0; } p->subs[index].f.frametype = AST_FRAME_CONTROL; p->subs[index].f.subclass = AST_CONTROL_RINGING; break; *********************************************************************** I am seaching Why loop exits before reaching limit of 8867 or what makes zt_handle_event to control the flow. Please help me with any idea you have. Also tell if I am on wrong path for right problem PS: I have tried best to explain it but if ny doubt prevails pls tell me. Regards Gurminder