[SIPForum-discussion] ERROR IN CALL INITIATION

Aymen Malik aymenmalik37 at yahoo.com
Sun Aug 12 09:46:32 UTC 2012



Hello
   I am a novice in programming and networking and at a beginning stage of using exosip .I am using exosip  and sip in my project and want to generate a peer to 
peer session between 2 computers.I have installed sip,osip and exosip 
packages. I am using exosip user manual guide 
but when i hav run the code of call initiation from there it is 
resolving ip, as in wireshark i can only see packets of DNS but it is not 
indicating an out going packets from the caller to the callee .The code 
with  little bit amendments is given below.. if anyone can  sort out whats the 
issue.....Thanks in advance.


#include <eXosip2/eXosip.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

eXosip_event_t *je;
unsigned short Port;

void *reference(void *arg)
{
    printf("\nReferece function called"); fflush(stdout);
    for(;;) sleep(10);
}

int exoSIP_Init()
{
    int i;
    TRACE_INITIALIZE (6, stdout);
    i=eXosip_init();
    if (i!=0)
    return -1;
    i = eXosip_listen_addr (IPPROTO_UDP, NULL, Port, AF_INET, 0);
    if (i!=0)
    {
    eXosip_quit();
    fprintf (stderr, "could not initialize transport layer\n");
    return -1;
    }
    return 0;
}

int main(void)
{
    Port = 3030;
    int t=0;

    int i;
    i = exoSIP_Init();

    printf("\n------------%d",t++); fflush(stdout);
    if(i!=0) {
        printf("exoSIP_Init() returned non-zero value:");
        exit(-1);
    }
    printf("\n------------%d",t++); fflush(stdout);

    for (;;)
    {

/*        je = eXosip_event_wait (0, 50);
        eXosip_lock();
        eXosip_automatic_action ();
        eXosip_unlock();
    printf("\n------------%d",t++); fflush(stdout);
        if (je == NULL) {
            printf("\neXosip_event_wait() returned NULL\n");fflush(stdout);
            break;
        }
*/
//        if (je->type == EXOSIP_CALL_INVITE)
        {

        osip_message_t *invite;
        int i;

        char temp_ip[1000];
        char temp_str[1000];
            eXosip_guess_localip (AF_INET, temp_ip, 128);
        strcpy(temp_str,"sip:");
        strcat(temp_str,temp_ip);
        i = eXosip_call_build_initial_invite (&invite,
        "<sip:to at antisip.com>",
//        "sip:172.16.0.76",
//        "<sip:from at antisip.com>",
//        "sip:172.16.0.100",
        temp_str,
        NULL, // optionnal route header
        "This is a call for a conversation");
        if (i != 0)
        {
            
            return -1;
        }

    printf("\n------------%d",t++); fflush(stdout);
        osip_message_set_supported (invite, "100rel");
        {
            char tmp[4096];
            char localip[128];
            eXosip_guess_localip (AF_INET, localip, 128);
            
//            snprintf (tmp, 4096,
            sprintf (tmp,
            "v=0\r\n"
            "o=josua 0 0 IN IP4 %s\r\n"
            "s=conversation\r\n"
            "c=IN IP4 %s\r\n"
            "t=0 0\r\n"
            "m=audio %u RTP/AVP 0 8 101\r\n"
            "a=rtpmap:0 PCMU/8000\r\n"
            "a=rtpmap:8 PCMA/8000\r\n"
            "a=rtpmap:101 telephone-event/8000\r\n"
            "a=fmtp:101 0-11\r\n", localip, localip, Port);
            osip_message_set_body (invite, tmp, strlen (tmp));
            osip_message_set_content_type (invite, "application/sdp");
        }
//    sleep(5);
    
        eXosip_lock ();
        i = eXosip_call_send_initial_invite (invite);
     
        if (i > 0)
        {
//        eXosip_call_set_reference (i,reference);
        eXosip_call_set_reference (i,(void *)NULL);
        }
        eXosip_unlock ();
        return i;
        }
    }
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sipforum.org/pipermail/discussion/attachments/20120812/e5ef92ea/attachment-0002.html>


More information about the discussion mailing list