@@ -919,26 +919,26 @@ char *janus_sdp_write(janus_sdp *imported) {
919
919
janus_refcount_increase (& imported -> ref );
920
920
char * sdp = g_malloc (1024 ), mline [JANUS_BUFSIZE ], buffer [512 ];
921
921
* sdp = '\0' ;
922
- size_t sdplen = 1024 , mlen = sizeof (mline );
922
+ size_t sdplen = 1024 , mlen = sizeof (mline ), offset = 0 , moffset = 0 ;
923
923
/* v= */
924
924
g_snprintf (buffer , sizeof (buffer ), "v=%d\r\n" , imported -> version );
925
- janus_strlcat (sdp , buffer , sdplen );
925
+ janus_strlcat_fast (sdp , buffer , sdplen , & offset );
926
926
/* o= */
927
927
g_snprintf (buffer , sizeof (buffer ), "o=%s %" SCNu64 " %" SCNu64 " IN %s %s\r\n" ,
928
928
imported -> o_name , imported -> o_sessid , imported -> o_version ,
929
929
imported -> o_ipv4 ? "IP4" : "IP6" , imported -> o_addr );
930
- janus_strlcat (sdp , buffer , sdplen );
930
+ janus_strlcat_fast (sdp , buffer , sdplen , & offset );
931
931
/* s= */
932
932
g_snprintf (buffer , sizeof (buffer ), "s=%s\r\n" , imported -> s_name );
933
- janus_strlcat (sdp , buffer , sdplen );
933
+ janus_strlcat_fast (sdp , buffer , sdplen , & offset );
934
934
/* t= */
935
935
g_snprintf (buffer , sizeof (buffer ), "t=%" SCNu64 " %" SCNu64 "\r\n" , imported -> t_start , imported -> t_stop );
936
- janus_strlcat (sdp , buffer , sdplen );
936
+ janus_strlcat_fast (sdp , buffer , sdplen , & offset );
937
937
/* c= */
938
938
if (imported -> c_addr != NULL ) {
939
939
g_snprintf (buffer , sizeof (buffer ), "c=IN %s %s\r\n" ,
940
940
imported -> c_ipv4 ? "IP4" : "IP6" , imported -> c_addr );
941
- janus_strlcat (sdp , buffer , sdplen );
941
+ janus_strlcat_fast (sdp , buffer , sdplen , & offset );
942
942
}
943
943
/* a= */
944
944
GList * temp = imported -> attributes ;
@@ -949,62 +949,63 @@ char *janus_sdp_write(janus_sdp *imported) {
949
949
} else {
950
950
g_snprintf (buffer , sizeof (buffer ), "a=%s\r\n" , a -> name );
951
951
}
952
- janus_strlcat (sdp , buffer , sdplen );
952
+ janus_strlcat_fast (sdp , buffer , sdplen , & offset );
953
953
temp = temp -> next ;
954
954
}
955
955
/* m= */
956
956
temp = imported -> m_lines ;
957
957
while (temp ) {
958
958
mline [0 ] = '\0' ;
959
+ moffset = 0 ;
959
960
janus_sdp_mline * m = (janus_sdp_mline * )temp -> data ;
960
961
g_snprintf (buffer , sizeof (buffer ), "m=%s %d %s" , m -> type_str , m -> port , m -> proto );
961
- janus_strlcat (mline , buffer , mlen );
962
+ janus_strlcat_fast (mline , buffer , mlen , & moffset );
962
963
if (m -> port == 0 && m -> type != JANUS_SDP_APPLICATION ) {
963
964
/* Remove all payload types/formats if we're rejecting the media */
964
965
g_list_free_full (m -> fmts , (GDestroyNotify )g_free );
965
966
m -> fmts = NULL ;
966
967
g_list_free (m -> ptypes );
967
968
m -> ptypes = NULL ;
968
969
m -> ptypes = g_list_append (m -> ptypes , GINT_TO_POINTER (0 ));
969
- janus_strlcat (mline , " 0" , mlen );
970
+ janus_strlcat_fast (mline , " 0" , mlen , & moffset );
970
971
} else {
971
972
if (m -> proto != NULL && strstr (m -> proto , "RTP" ) != NULL ) {
972
973
/* RTP profile, use payload types */
973
974
GList * ptypes = m -> ptypes ;
974
975
while (ptypes ) {
975
976
g_snprintf (buffer , sizeof (buffer ), " %d" , GPOINTER_TO_INT (ptypes -> data ));
976
- janus_strlcat (mline , buffer , mlen );
977
+ janus_strlcat_fast (mline , buffer , mlen , & moffset );
977
978
ptypes = ptypes -> next ;
978
979
}
979
980
} else {
980
981
/* Something else, use formats */
981
982
GList * fmts = m -> fmts ;
982
983
while (fmts ) {
983
984
g_snprintf (buffer , sizeof (buffer ), " %s" , (char * )(fmts -> data ));
984
- janus_strlcat (mline , buffer , mlen );
985
+ janus_strlcat_fast (mline , buffer , mlen , & moffset );
985
986
fmts = fmts -> next ;
986
987
}
987
988
}
988
989
}
989
- janus_strlcat (mline , "\r\n" , mlen );
990
+ janus_strlcat_fast (mline , "\r\n" , mlen , & moffset );
990
991
/* c= */
991
992
if (m -> c_addr != NULL ) {
992
993
g_snprintf (buffer , sizeof (buffer ), "c=IN %s %s\r\n" ,
993
994
m -> c_ipv4 ? "IP4" : "IP6" , m -> c_addr );
994
- janus_strlcat (mline , buffer , mlen );
995
+ janus_strlcat_fast (mline , buffer , mlen , & moffset );
995
996
}
996
997
if (m -> port > 0 ) {
997
998
/* b= */
998
999
if (m -> b_name != NULL ) {
999
1000
g_snprintf (buffer , sizeof (buffer ), "b=%s:%" SCNu32 "\r\n" , m -> b_name , m -> b_value );
1000
- janus_strlcat (mline , buffer , mlen );
1001
+ janus_strlcat_fast (mline , buffer , mlen , & moffset );
1001
1002
}
1002
1003
}
1003
1004
/* a= (note that we don't format the direction if it's JANUS_SDP_DEFAULT) */
1004
1005
const char * direction = m -> direction != JANUS_SDP_DEFAULT ? janus_sdp_mdirection_str (m -> direction ) : NULL ;
1005
1006
if (direction != NULL ) {
1006
1007
g_snprintf (buffer , sizeof (buffer ), "a=%s\r\n" , direction );
1007
- janus_strlcat (mline , buffer , mlen );
1008
+ janus_strlcat_fast (mline , buffer , mlen , & moffset );
1008
1009
}
1009
1010
GList * temp2 = m -> attributes ;
1010
1011
while (temp2 ) {
@@ -1019,7 +1020,7 @@ char *janus_sdp_write(janus_sdp *imported) {
1019
1020
} else {
1020
1021
g_snprintf (buffer , sizeof (buffer ), "a=%s\r\n" , a -> name );
1021
1022
}
1022
- janus_strlcat (mline , buffer , mlen );
1023
+ janus_strlcat_fast (mline , buffer , mlen , & moffset );
1023
1024
temp2 = temp2 -> next ;
1024
1025
}
1025
1026
/* Append the generated m-line to the SDP */
@@ -1033,7 +1034,7 @@ char *janus_sdp_write(janus_sdp *imported) {
1033
1034
sdplen = sdplen * 2 ;
1034
1035
sdp = g_realloc (sdp , sdplen );
1035
1036
}
1036
- janus_strlcat (sdp , mline , sdplen );
1037
+ janus_strlcat_fast (sdp , mline , sdplen , & offset );
1037
1038
/* Move on */
1038
1039
temp = temp -> next ;
1039
1040
}
0 commit comments