annotate sip-manual-out/main.c @ 124:7e04d28fae8b

sip-in: default use-100rel to no BulkVS servers act badly when we send a reliable 180 Ringing response to an incoming call, even though they advertise 100rel support in the Supported header in the INVITE packet, and we probably won't be implementing 100rel for outbound because doing per-the-spec PRACK as a UAC is just too burdensome. Therefore, we need to consider 100rel extension as not-really-supported in themwi-system-sw.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 01 Oct 2022 15:54:50 -0800
parents a36b731bfef9
children 258932879f8b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This is the main module for sip-manual-out test program.
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <sys/types.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <sys/time.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <sys/socket.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <sys/errno.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <netinet/in.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <arpa/inet.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <stdio.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include <stdlib.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include <string.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include <strings.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include <unistd.h>
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #include "../libsip/out_msg.h"
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 #include "../libsip/sdp.h"
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 extern int sip_socket;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 extern struct in_addr sip_bind_ip, sip_dest_ip;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 extern unsigned sip_bind_port, sip_dest_port;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 extern char sip_dest_domain[];
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 extern struct sockaddr_in dummy_rtp_endp;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 struct sockaddr_in sip_dest_sin;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 char from_uri[128], to_uri[128], call_id[128];
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 struct timeval cur_event_time;
120
c62d0f28da6f sip-manual-out: make Max-Forwards configurable
Mychaela Falconia <falcon@freecalypso.org>
parents: 119
diff changeset
28 unsigned max_forwards = 70;
121
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
29 int declare_100rel_supp;
122
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
30 int pcma_codec_pref, pcma_codec_force;
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 send_invite_req()
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 {
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 struct sip_msg_out msg;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 struct sdp_gen sdp;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 int rc;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 rc = start_request_out_msg(&msg, "INVITE", to_uri);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 if (rc < 0) {
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 msg_size_err: fprintf(stderr, "composing INVITE req: msg size error\n");
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 exit(1);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 }
123
a36b731bfef9 sip-manual-out: implement sending BYE and CANCEL
Mychaela Falconia <falcon@freecalypso.org>
parents: 122
diff changeset
43 rc = add_req_boilerplate(&msg, "1 INVITE", 0);
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 if (rc < 0)
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 goto msg_size_err;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 rc = add_contact_header(&msg);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 if (rc < 0)
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 goto msg_size_err;
121
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
49 if (declare_100rel_supp) {
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
50 rc = out_msg_add_header(&msg, "Supported", "100rel");
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
51 if (rc < 0)
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
52 goto msg_size_err;
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
53 }
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 rc = out_msg_add_header(&msg, "Content-Type", "application/sdp");
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 if (rc < 0)
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 goto msg_size_err;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 bzero(&sdp, sizeof sdp);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 sdp.conn_ip = dummy_rtp_endp.sin_addr;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 sdp.conn_port = ntohs(dummy_rtp_endp.sin_port);
122
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
60 if (pcma_codec_force)
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
61 sdp.codec_mask = SDP_CODEC_MASK_PCMA;
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
62 else {
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
63 sdp.codec_mask = SDP_CODEC_MASK_BOTH;
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
64 if (pcma_codec_pref)
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
65 sdp.codec_mask |= SDP_CODEC_MASK_PCMA_PREF;
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
66 }
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 sdp.session_id = sdp.conn_port << 16;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 sdp.owner_ip = sip_bind_ip;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 rc = out_msg_finish_sdp(&msg, &sdp);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 if (rc < 0)
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 goto msg_size_err;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 sip_tx_packet(&msg, &sip_dest_sin);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 }
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74
119
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
75 static void
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
76 preliminary_proc(argc, argv)
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
77 char **argv;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
78 {
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
79 extern int optind;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
80 extern char *optarg;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
81 char *logfile;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
82 int opt, rc;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
83
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
84 logfile = 0;
122
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
85 while ((opt = getopt(argc, argv, "aAl:m:r")) != EOF) {
119
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
86 switch (opt) {
122
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
87 case 'a':
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
88 pcma_codec_pref = 1;
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
89 continue;
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
90 case 'A':
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
91 pcma_codec_force = 1;
07e4cc5f824c sip-manual-out: add options to test PCMA codec
Mychaela Falconia <falcon@freecalypso.org>
parents: 121
diff changeset
92 continue;
119
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
93 case 'l':
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
94 logfile = optarg;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
95 continue;
120
c62d0f28da6f sip-manual-out: make Max-Forwards configurable
Mychaela Falconia <falcon@freecalypso.org>
parents: 119
diff changeset
96 case 'm':
c62d0f28da6f sip-manual-out: make Max-Forwards configurable
Mychaela Falconia <falcon@freecalypso.org>
parents: 119
diff changeset
97 max_forwards = atoi(optarg);
c62d0f28da6f sip-manual-out: make Max-Forwards configurable
Mychaela Falconia <falcon@freecalypso.org>
parents: 119
diff changeset
98 continue;
121
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
99 case 'r':
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
100 declare_100rel_supp = 1;
5dc0190a624e sip-manual-out: add -r option for testing 100rel
Mychaela Falconia <falcon@freecalypso.org>
parents: 120
diff changeset
101 continue;
119
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
102 default:
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
103 usage:
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
104 fprintf(stderr,
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
105 "usage: %s [options] dest-conf from-num to-num\n",
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
106 argv[0]);
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
107 exit(1);
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
108 }
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
109 }
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
110 if (argc != optind + 3)
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
111 goto usage;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
112 read_config_file(argv[optind]);
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
113 open_sip_udp_socket();
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
114 obtain_dummy_rtp();
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
115 sip_dest_sin.sin_family = AF_INET;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
116 sip_dest_sin.sin_addr = sip_dest_ip;
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
117 sip_dest_sin.sin_port = htons(sip_dest_port);
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
118 sprintf(from_uri, "<sip:%s@%s>;tag=out%u", argv[optind+1],
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
119 inet_ntoa(sip_bind_ip), ntohs(dummy_rtp_endp.sin_port));
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
120 sprintf(to_uri, "sip:%s@%s", argv[optind+2], sip_dest_domain);
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
121 if (logfile) {
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
122 rc = open_sip_log_file(logfile);
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
123 if (rc < 0)
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
124 exit(1); /* error msg already printed */
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
125 }
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
126 }
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
127
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 main(argc, argv)
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 char **argv;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 {
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 fd_set fds;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 int rc;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133
119
056616f7e8ab sip-manual-out: convert command line to getopt style
Mychaela Falconia <falcon@freecalypso.org>
parents: 74
diff changeset
134 preliminary_proc(argc, argv);
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 gettimeofday(&cur_event_time, 0);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 sprintf(call_id, "%08u_%u@%s",
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 (unsigned)(cur_event_time.tv_sec % 100000000),
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 ntohs(dummy_rtp_endp.sin_port), inet_ntoa(sip_bind_ip));
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 send_invite_req();
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 /* main select loop */
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 for (;;) {
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 FD_ZERO(&fds);
123
a36b731bfef9 sip-manual-out: implement sending BYE and CANCEL
Mychaela Falconia <falcon@freecalypso.org>
parents: 122
diff changeset
143 FD_SET(0, &fds);
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 FD_SET(sip_socket, &fds);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 rc = select(sip_socket+1, &fds, 0, 0, 0);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 if (rc < 0) {
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 if (errno == EINTR)
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 continue;
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 perror("select");
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 exit(1);
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 }
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 gettimeofday(&cur_event_time, 0);
123
a36b731bfef9 sip-manual-out: implement sending BYE and CANCEL
Mychaela Falconia <falcon@freecalypso.org>
parents: 122
diff changeset
153 if (FD_ISSET(0, &fds))
a36b731bfef9 sip-manual-out: implement sending BYE and CANCEL
Mychaela Falconia <falcon@freecalypso.org>
parents: 122
diff changeset
154 select_stdin();
71
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 if (FD_ISSET(sip_socket, &fds))
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 sip_socket_select();
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 }
d74b545a3c2a sip-manual-out: new test program
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 }