| 160 | |
| 161 | |
| 162 | static char * warning_builder( struct sip_msg *msg, unsigned int *returned_len) |
| 163 | { |
| 164 | static char buf[MAX_WARNING_LEN]; |
| 165 | str *foo; |
| 166 | int print_len, l, clen; |
| 167 | char* t; |
| 168 | |
| 169 | #define str_print(string, string_len) \ |
| 170 | do{ \ |
| 171 | l=(string_len); \ |
| 172 | if ((clen+l)>MAX_WARNING_LEN) \ |
| 173 | goto error_overflow; \ |
| 174 | memcpy(buf+clen, (string), l); \ |
| 175 | clen+=l; \ |
| 176 | }while(0) |
| 177 | |
| 178 | #define str_lenpair_print(string, string_len, string2, string2_len) \ |
| 179 | do{ \ |
| 180 | str_print(string, string_len); \ |
| 181 | str_print(string2, string2_len);\ |
| 182 | }while(0) |
| 183 | |
| 184 | #define str_pair_print( string, string2, string2_len) \ |
| 185 | str_lenpair_print((string), strlen((string)), (string2), (string2_len)) |
| 186 | |
| 187 | #define str_int_print(string, intval)\ |
| 188 | do{\ |
| 189 | t=int2str((intval), &print_len); \ |
| 190 | str_pair_print(string, t, print_len);\ |
| 191 | } while(0) |
| 192 | |
| 193 | #define str_ipaddr_print(string, ipaddr_val)\ |
| 194 | do{\ |
| 195 | t=ip_addr2a((ipaddr_val)); \ |
| 196 | print_len=strlen(t); \ |
| 197 | str_pair_print(string, t, print_len);\ |
| 198 | } while(0) |
| 199 | |
| 200 | clen=0; |
| 201 | str_lenpair_print(WARNING, WARNING_LEN, |
| 202 | msg->rcv.bind_address->name.s, |
| 203 | msg->rcv.bind_address->name.len); |
| 204 | str_lenpair_print(":", 1, msg->rcv.bind_address->port_no_str.s, |
| 205 | msg->rcv.bind_address->port_no_str.len); |
| 206 | str_print(WARNING_PHRASE, WARNING_PHRASE_LEN); |
| 207 | |
| 208 | /*adding out_uri*/ |
| 209 | if (msg->new_uri.s) |
| 210 | foo=&(msg->new_uri); |
| 211 | else |
| 212 | foo=&(msg->first_line.u.request.uri); |
| 213 | /* pid= */ |
| 214 | str_int_print(" pid=", my_pid()); |
| 215 | /* req_src_ip= */ |
| 216 | str_ipaddr_print(" req_src_ip=", &msg->rcv.src_ip); |
| 217 | str_int_print(" req_src_port=", msg->rcv.src_port); |
| 218 | str_pair_print(" in_uri=", msg->first_line.u.request.uri.s, |
| 219 | msg->first_line.u.request.uri.len); |
no test coverage detected