Changeset 1852 for pjproject/trunk/pjnath/src/pjturn-srv/listener_udp.c
- Timestamp:
- Mar 9, 2008 12:55:00 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjnath/src/pjturn-srv/listener_udp.c
r1812 r1852 22 22 { 23 23 pj_ioqueue_op_key_t op_key; 24 pj turn_pkt pkt;24 pj_turn_pkt pkt; 25 25 }; 26 26 27 27 struct udp_listener 28 28 { 29 pj turn_listener base;29 pj_turn_listener base; 30 30 pj_ioqueue_key_t *key; 31 31 unsigned read_cnt; … … 34 34 35 35 36 static pj_status_t udp_sendto(pj turn_listener *listener,36 static pj_status_t udp_sendto(pj_turn_listener *listener, 37 37 const void *packet, 38 38 pj_size_t size, … … 40 40 const pj_sockaddr_t *addr, 41 41 int addr_len); 42 static pj_status_t udp_destroy(pj turn_listener *udp);42 static pj_status_t udp_destroy(pj_turn_listener *udp); 43 43 static void on_read_complete(pj_ioqueue_key_t *key, 44 44 pj_ioqueue_op_key_t *op_key, … … 49 49 * Create a new listener on the specified port. 50 50 */ 51 PJ_DEF(pj_status_t) pj turn_listener_create_udp( pjturn_srv *srv,51 PJ_DEF(pj_status_t) pj_turn_listener_create_udp( pj_turn_srv *srv, 52 52 int af, 53 53 const pj_str_t *bound_addr, … … 55 55 unsigned concurrency_cnt, 56 56 unsigned flags, 57 pj turn_listener **p_listener)57 pj_turn_listener **p_listener) 58 58 { 59 59 pj_pool_t *pool; … … 64 64 65 65 /* Create structure */ 66 pool = pj_pool_create(srv->core.pf, "udp lis%p", 1000, 1000, NULL);66 pool = pj_pool_create(srv->core.pf, "udp%p", 1000, 1000, NULL); 67 67 udp = PJ_POOL_ZALLOC_T(pool, struct udp_listener); 68 68 udp->base.pool = pool; 69 udp->base.obj_name = pool->obj_name; 69 70 udp->base.server = srv; 70 udp->base.tp_type = PJ TURN_TP_UDP;71 udp->base.tp_type = PJ_TURN_TP_UDP; 71 72 udp->base.sock = PJ_INVALID_SOCKET; 72 73 udp->base.sendto = &udp_sendto; … … 86 87 goto on_error; 87 88 89 /* Create info */ 90 pj_ansi_strcpy(udp->base.info, "UDP:"); 91 pj_sockaddr_print(&udp->base.addr, udp->base.info+4, 92 sizeof(udp->base.info)-4, 3); 93 88 94 /* Bind socket */ 89 95 status = pj_sock_bind(udp->base.sock, &udp->base.addr, … … 105 111 for (i=0; i<concurrency_cnt; ++i) { 106 112 pj_pool_t *rpool = pj_pool_create(srv->core.pf, "rop%p", 107 1000, 1000, NULL); 113 sizeof(struct read_op)+1000, 114 1000, NULL); 108 115 109 116 udp->read_op[i] = PJ_POOL_ZALLOC_T(rpool, struct read_op); … … 114 121 115 122 /* Done */ 123 PJ_LOG(4,(udp->base.obj_name, "Listener %s created", udp->base.info)); 124 116 125 *p_listener = &udp->base; 117 126 return PJ_SUCCESS; … … 127 136 * Destroy listener. 128 137 */ 129 static pj_status_t udp_destroy(pj turn_listener *listener)138 static pj_status_t udp_destroy(pj_turn_listener *listener) 130 139 { 131 140 struct udp_listener *udp = (struct udp_listener *)listener; … … 150 159 151 160 if (udp->base.pool) { 152 pj_pool_release(udp->base.pool); 161 pj_pool_t *pool = udp->base.pool; 162 163 PJ_LOG(4,(udp->base.obj_name, "Listener %s destroyed", 164 udp->base.info)); 165 153 166 udp->base.pool = NULL; 167 pj_pool_release(pool); 154 168 } 155 169 return PJ_SUCCESS; … … 159 173 * Callback to send packet. 160 174 */ 161 static pj_status_t udp_sendto(pj turn_listener *listener,175 static pj_status_t udp_sendto(pj_turn_listener *listener, 162 176 const void *packet, 163 177 pj_size_t size, … … 167 181 { 168 182 pj_ssize_t len = size; 169 return pj_sock_sendto(listener->sock, packet, &len, flag, addr, 170 pj_sockaddr_get_len(addr)); 183 return pj_sock_sendto(listener->sock, packet, &len, flag, addr, addr_len); 171 184 } 172 185 … … 192 205 pj_gettimeofday(&read_op->pkt.rx_time); 193 206 194 pj turn_srv_on_rx_pkt(udp->base.server, &read_op->pkt);207 pj_turn_srv_on_rx_pkt(udp->base.server, &read_op->pkt); 195 208 } 196 209
Note: See TracChangeset
for help on using the changeset viewer.