MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / socket2str

Function socket2str

socket_info.h:589–635  ·  view source on GitHub ↗

builds the full name of the socket ( proto:name[:port] ), using different naming for it, depending on the "type" parameter : 0 - real name 1 - advertised name 2 - tagged name */

Source from the content-addressed store, hash-verified

587 2 - tagged name
588*/
589static inline char* socket2str(const struct socket_info *sock, char *s, int *len, int type)
590{
591 static char buf[MAX_SOCKET_STR];
592 char *p,*p1;
593
594 if (s) {
595 /* buffer provided -> check lenght */
596 if ( sock_str_len(sock,type) > *len ) {
597 LM_ERR("buffer too short\n");
598 return 0;
599 }
600 p = p1 = s;
601 } else {
602 p = p1 = buf;
603 }
604
605 p = proto2str( sock->proto, p);
606 if (p==NULL) return 0;
607
608 *(p++) = ':';
609 switch (type) {
610 case 0:
611 memcpy( p, sock->address_str.s, sock->address_str.len);
612 p += sock->address_str.len;
613 *(p++) = ':';
614 memcpy( p, sock->port_no_str.s, sock->port_no_str.len);
615 p += sock->port_no_str.len;
616 break;
617 case 1:
618 memcpy( p, sock->adv_name_str.s, sock->adv_name_str.len);
619 p += sock->adv_name_str.len;
620 *(p++) = ':';
621 memcpy( p, sock->adv_port_str.s, sock->adv_port_str.len);
622 p += sock->adv_port_str.len;
623 break;
624 case 2:
625 memcpy( p, sock->tag.s, sock->tag.len);
626 p += sock->tag.len;
627 break;
628 default:
629 LM_BUG("unsupported type %d in printing socket name <%.*s>\n",
630 type, sock->name.len, sock->name.s);
631 }
632 *len = (int)(long)(p-p1);
633 LM_DBG("<%.*s>\n",*len,p1);
634 return p1;
635}
636
637
638#define get_sock_info_list(_proto) \

Callers 3

fix_socketFunction · 0.85
ds_print_mi_listFunction · 0.85
run_mi_reg_listFunction · 0.85

Calls 1

proto2strFunction · 0.85

Tested by

no test coverage detected