Пример #1
0
int __amplesky28181_close(pvp_uthttp put, int sockfd)
{
    gldata *gd = NULL;
    char src_flag[32] = {0};
    //struct _sessions session;

    set_idle_bind_port( getsockport(sockfd) );
    sprintf(src_flag, "%d:%d", put->src_ip, put->src_port);
    if ((gd = gl_get_data(src_flag)) != NULL)
        gl_rm_data(src_flag);

    return 1;
}
Пример #2
0
int __amplesky28181_request(pvp_uthttp put, char **ut_buf, u32 *pack_len)
{
    int res = 1;
    char lip[16] = {0};
    char dip[16] = {0};
    
    //printf("dport:%d\n", put->dport);
    //printf("sport:%d\n", put->src_port);
        //char cmd[16] = {0};
        //memcpy(cmd, *ut_buf, sizeof(cmd)-1);
        //puts(cmd);
    puts("---------- REQUEST ----------");

    if (sip_is(*ut_buf, SIP_FLAG_REGISTER))
    {
    puts("---------- REQUEST 1 --------");
        do_ferry_sip_request_register(put, ut_buf, pack_len);
    }
    else if (sip_is(*ut_buf, SIP_FLAG_MESSAGE))
    {
    puts("---------- REQUEST 2 --------");
        inet_ultoa(__gg.outer_addr, lip);
        inet_ultoa(put->dip, dip);
        do_ferry_sip_request_message(put, ut_buf, pack_len);
        do_sip_reply_replace_to_by_key(put, SIP_FLAG_CONTACT, lip, getsockport(put->svr_sock), ut_buf, pack_len);
        do_sip_reply_replace_to_by_key(put, "To: <sip:", dip, put->dport, ut_buf, pack_len);
    }
    else if (sip_is(*ut_buf, SIP_FLAG_OK))
    {
    puts("---------- REQUEST 3 --------");
        do_ferry_sip_request_200ok(put, ut_buf, pack_len);
    }
    puts("---------- REQUEST 4 --------");
    do_sip_reply_invite(put, ut_buf, pack_len);
    //////////////////
    /*
       else if (sip_is(*ut_buf, SIP_FLAG_INVITE))
       {
       do_sip_reply_invite(put, ut_buf, pack_len);
       do_sip_reply_replace_via(put, ut_buf, pack_len);
       }
       else if (sip_is(*ut_buf, SIP_FLAG_BYE))
       {
       do_sip_reply_bye(put, ut_buf, pack_len);
       do_sip_reply_replace_via(put, ut_buf, pack_len);
       }
       else if (sip_is(*ut_buf, SIP_FLAG_ACK))
       {
       do_sip_reply_ack(put, ut_buf, pack_len);
       do_sip_reply_replace_via(put, ut_buf, pack_len);
       }
       else if (sip_is(*ut_buf, SIP_FLAG_INFO))
       {
       do_sip_reply_info(put, ut_buf, pack_len);
       do_sip_reply_replace_via(put, ut_buf, pack_len);
       }

       do_sip_reply_replace_by_key(put, SIP_FLAG_CONTACT, ut_buf, pack_len);
       do_sip_reply_replace_by_key(put, "From: <sip:", ut_buf, pack_len);
       */
/////////////////////
    puts("---------- REQUEST 5 --------");
    update_content_len(ut_buf, pack_len);
    puts("---------- REQUEST 6 --------");

    return res;
}
Пример #3
0
/*
 * main: Sets up the socket and handles client requests with a child 
 * process per socket.                                       
 */
void
dmac_listener(void *v_void)
{
    verinet_t *v = (verinet_t *)v_void;
    int sockfd, newsockfd, one = 1;
    socklen_t clilen;
    struct sockaddr_in cli_addr, serv_addr;

    /* Initialize socket ... */

    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
	perror("server: can't open stream socket");
	exit(1);
    }

    if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR,
		   (char *) &one, sizeof (one)) < 0) {
	perror("setsockopt");
    }

    /*
     * Setup server address...
     */
    memset((void *) &serv_addr,0x0, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    serv_addr.sin_port = htons(0);	/* Pick any port */

    /*
     * Bind our local address
     */
    if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
	perror("dmac: unable to bind address");
	sal_thread_exit(0);
    }

    v->dmaPort = getsockport(sockfd);	/* Get port that was picked */

    /* listen for inbound connections ... */
    listen(sockfd, 5);
  
    /* Notify dmac_init that socket is listening */
    sal_sem_give(v->dmacListening);

    printk("DMA Controller listening on port[%d]\n", v->dmaPort);

    while (!v->dmacWorkerExit) { 
	clilen = sizeof(cli_addr);

	newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
	if (newsockfd < 0 && errno == EINTR) {
	    continue;
	}

	if (newsockfd < 0) {
	    perror("server: accept error");
	} else {
	    v->dmacFd = newsockfd;
	    v->dmacHandler = sal_thread_create("DMA-controller",
						SAL_THREAD_STKSZ, 100,
						dmac_handler, v);

	    if (SAL_THREAD_ERROR == v->dmacHandler) {
		printk("Thread creation error!\n");
	    } else {
		debugk(DK_VERINET, "DMAC request thread dispatched.\n");
	    }
	}
    }
    debugk(DK_VERINET, "DMA listener shutdown.\n");
    sal_thread_exit(0);
}