Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ortp for openSUSE:Factory checked in at 2021-07-18 23:44:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ortp (Old) and /work/SRC/openSUSE:Factory/.ortp.new.2632 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ortp" Sun Jul 18 23:44:57 2021 rev:29 rq:906259 version:5.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ortp/ortp.changes 2021-06-25 15:01:11.712141130 +0200 +++ /work/SRC/openSUSE:Factory/.ortp.new.2632/ortp.changes 2021-07-18 23:45:08.686955761 +0200 @@ -1,0 +2,6 @@ +Wed Jul 14 08:34:11 UTC 2021 - Paolo Stivanin <i...@paolostivanin.com> + +- Update to 5.0.0: + * small memory leak around TMMBR receiving. + +------------------------------------------------------------------- Old: ---- ortp-4.5.20.tar.gz New: ---- ortp-5.0.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ortp.spec ++++++ --- /var/tmp/diff_new_pack.YOohPA/_old 2021-07-18 23:45:09.230951577 +0200 +++ /var/tmp/diff_new_pack.YOohPA/_new 2021-07-18 23:45:09.234951546 +0200 @@ -20,7 +20,7 @@ %define soname libortp %define sover 15 Name: ortp -Version: 4.5.20 +Version: 5.0.0 Release: 0 Summary: Real-time Transport Protocol Stack License: GPL-2.0-or-later @@ -72,7 +72,7 @@ mkdir -p %{buildroot}%{_docdir}/%{name}/ # manually keeping the version here because upstream doesn't (usually) update the patch version -mv -T %{buildroot}%{_datadir}/doc/%{name}-4.5.0/ \ +mv -T %{buildroot}%{_datadir}/doc/%{name}-5.0.0/ \ %{buildroot}%{_docdir}/%{name}/ mv %{buildroot}%{_datadir}/doc/%{name}-./LICENSE.txt %{buildroot}%{_docdir}/%{name}/ ++++++ ortp-4.5.20.tar.gz -> ortp-5.0.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/CHANGELOG.md new/ortp-5.0.0/CHANGELOG.md --- old/ortp-4.5.20/CHANGELOG.md 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/CHANGELOG.md 2021-07-07 16:37:12.000000000 +0200 @@ -6,6 +6,11 @@ ## [Unreleased] +## [5.0.0] - 2021-07-08 + +### Fixed +- small memory leak around TMMBR receiving. + ## [4.5.0] - 2021-03-29 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/CMakeLists.txt new/ortp-5.0.0/CMakeLists.txt --- old/ortp-4.5.20/CMakeLists.txt 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/CMakeLists.txt 2021-07-07 16:37:12.000000000 +0200 @@ -21,7 +21,7 @@ ############################################################################ cmake_minimum_required(VERSION 3.1) -project(oRTP VERSION 4.5.0) +project(oRTP VERSION 5.0.0) set(ORTP_MAJOR_VERSION ${PROJECT_VERSION_MAJOR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/include/ortp/port.h new/ortp-5.0.0/include/ortp/port.h --- old/ortp-4.5.20/include/ortp/port.h 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/include/ortp/port.h 2021-07-07 16:37:12.000000000 +0200 @@ -133,8 +133,12 @@ #if defined(__MINGW32__) || !defined(WINAPI_FAMILY_PARTITION) || !defined(WINAPI_PARTITION_DESKTOP) #define ORTP_WINDOWS_DESKTOP 1 #elif defined(WINAPI_FAMILY_PARTITION) +// See bctoolbox/include/port.h for WINAPI_PARTITION checker #if defined(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #define ORTP_WINDOWS_DESKTOP 1 +#elif defined (WINAPI_PARTITION_PC_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PC_APP) +#define ORTP_WINDOWS_DESKTOP 1 +#define ORTP_WINDOWS_UWP 1 #elif defined(WINAPI_PARTITION_PHONE_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) #define ORTP_WINDOWS_PHONE 1 #elif defined(WINAPI_PARTITION_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/src/CMakeLists.txt new/ortp-5.0.0/src/CMakeLists.txt --- old/ortp-4.5.20/src/CMakeLists.txt 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/src/CMakeLists.txt 2021-07-07 16:37:12.000000000 +0200 @@ -77,6 +77,7 @@ list(APPEND ORTP_SOURCE_FILES_CXX winrttimer.cpp winrttimer.h) set_source_files_properties(winrttimer.cpp PROPERTIES COMPILE_FLAGS "/ZW /AI\$(WindowsSDK_MetadataPath)") endif() + list(APPEND LIBS ws2_32)# symbols for in6addr_any endif() if(WIN32) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/src/dll_entry.c new/ortp-5.0.0/src/dll_entry.c --- old/ortp-4.5.20/src/dll_entry.c 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/src/dll_entry.c 2021-07-07 16:37:12.000000000 +0200 @@ -86,7 +86,11 @@ PAGE_READWRITE, // read/write access 0, // size: high 32-bits SHMEMSIZE, // size: low 32-bits +#ifdef ORTP_WINDOWS_UWP + L"oRTPSharedMemory"); // name of map object +#else "oRTPSharedMemory"); // name of map object +#endif if (hMapObject == NULL) return FALSE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/src/port.c new/ortp-5.0.0/src/port.c --- old/ortp-4.5.20/src/port.c 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/src/port.c 2021-07-07 16:37:12.000000000 +0200 @@ -26,6 +26,7 @@ #include "ortp/str_utils.h" #include "utils.h" #include <bctoolbox/port.h> +#include <bctoolbox/charconv.h> #if defined(_WIN32) && !defined(_WIN32_WCE) #include <process.h> @@ -532,13 +533,24 @@ ortp_pipe_t ortp_server_pipe_create(const char *name){ #ifdef ORTP_WINDOWS_DESKTOP ortp_pipe_t h; - char *pipename=make_pipe_name(name); - h=CreateNamedPipe(pipename,PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,PIPE_TYPE_MESSAGE|PIPE_WAIT,1, - 32768,32768,0,NULL); - ortp_free(pipename); +#ifdef ORTP_WINDOWS_UWP + char *pipenameBuf=make_pipe_name(name); + wchar_t * pipename = bctbx_string_to_wide_string(pipenameBuf); + ortp_free(pipenameBuf); +#else + char *pipename=make_pipe_name(name); +#endif + + h=CreateNamedPipe(pipename, PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,PIPE_TYPE_MESSAGE|PIPE_WAIT, 1, 32768, 32768, 0, NULL); if (h==INVALID_HANDLE_VALUE){ ortp_error("Fail to create named pipe %s",pipename); } + +#ifdef ORTP_WINDOWS_UWP + bctbx_free(pipename); +#else + ortp_free(pipename); +#endif if (event==NULL) event=CreateEvent(NULL,TRUE,FALSE,NULL); return h; #else @@ -596,7 +608,7 @@ } ortp_pipe_t ortp_client_pipe_connect(const char *name){ -#ifdef ORTP_WINDOWS_DESKTOP +#if defined( ORTP_WINDOWS_DESKTOP) && !defined(ORTP_WINDOWS_UWP) char *pipename=make_pipe_name(name); ortp_pipe_t hpipe = CreateFile( pipename, // pipe name @@ -647,10 +659,17 @@ void *ortp_shm_open(unsigned int keyid, int size, int create){ #ifdef ORTP_WINDOWS_DESKTOP HANDLE h; - char name[64]; void *buf; +#ifdef BCTBX_WINDOWS_UWP + char nameBuf[64]; + snprintf(nameBuf,sizeof(nameBuf),"%x",keyid); + wchar_t * name = bctbx_string_to_wide_string(nameBuf); +#else + char name[64]; snprintf(name,sizeof(name),"%x",keyid); +#endif + if (create){ h = CreateFileMapping( INVALID_HANDLE_VALUE, // use paging file @@ -669,6 +688,9 @@ ortp_error("Fail to open file mapping (create=%i)",create); return NULL; } +#ifdef BCTBX_WINDOWS_UWP + bctbx_free(name); +#endif buf = (LPTSTR) MapViewOfFile(h, // handle to map object FILE_MAP_ALL_ACCESS, // read/write permission 0, @@ -720,7 +742,7 @@ void _ortp_get_cur_time(ortpTimeSpec *ret, bool_t realtime){ #if defined(_WIN32_WCE) || defined(_WIN32) -#if defined( ORTP_WINDOWS_DESKTOP ) && !defined(ENABLE_MICROSOFT_STORE_APP) +#if defined( ORTP_WINDOWS_DESKTOP ) && !defined(ENABLE_MICROSOFT_STORE_APP) && !defined(ORTP_WINDOWS_UWP) DWORD timemillis; # if defined(_WIN32_WCE) timemillis=GetTickCount(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/src/posixtimer.c new/ortp-5.0.0/src/posixtimer.c --- old/ortp-4.5.20/src/posixtimer.c 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/src/posixtimer.c 2021-07-07 16:37:12.000000000 +0200 @@ -89,7 +89,7 @@ #else //_WIN32 -#ifdef ENABLE_MICROSOFT_STORE_APP +#if defined(ENABLE_MICROSOFT_STORE_APP) || defined(ORTP_WINDOWS_UWP) #include <windows.h> #include <mmsystem.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/src/rtpbundle.cc new/ortp-5.0.0/src/rtpbundle.cc --- old/ortp-4.5.20/src/rtpbundle.cc 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/src/rtpbundle.cc 2021-07-07 16:37:12.000000000 +0200 @@ -455,7 +455,7 @@ msgpullup(primarymsg, (size_t)-1); // TODO: Fix when possible - int len = primarymsg->b_wptr - primarymsg->b_rptr; + size_t len = primarymsg->b_wptr - primarymsg->b_rptr; memcpy(m->b_rptr, primarymsg->b_rptr, len); m->b_wptr = m->b_rptr + len; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/src/rtpsession.c new/ortp-5.0.0/src/rtpsession.c --- old/ortp-4.5.20/src/rtpsession.c 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/src/rtpsession.c 2021-07-07 16:37:12.000000000 +0200 @@ -1665,7 +1665,7 @@ meta_rtp_transport_destroy(rtcp_meta_transport); #if (_WIN32_WINNT >= 0x0600) && defined(ORTP_WINDOWS_DESKTOP) -#ifndef ENABLE_MICROSOFT_STORE_APP +#if !defined(ENABLE_MICROSOFT_STORE_APP) && !defined(ORTP_WINDOWS_UWP) if (session->rtp.QoSFlowID != 0) { ortp_message("check OS support for qwave.lib"); @@ -1687,6 +1687,8 @@ #endif //ENABLE_MICROSOFT_STORE_APP #endif + if (session->rtcp.tmmbr_info.sent) + freemsg(session->rtcp.tmmbr_info.sent); if (session->rtcp.tmmbr_info.received) freemsg(session->rtcp.tmmbr_info.received); if (session->rtcp.send_algo.fb_packets) @@ -2220,7 +2222,7 @@ if (id == (int)(*tmp >> 4)) { if (data) *data = tmp + 1; - return size; + return (int)size; } tmp += size + 1; @@ -2235,7 +2237,7 @@ if (id == (int)*tmp) { if (data) *data = tmp + 2; - return size; + return (int)size; } tmp += size + 2; @@ -2586,7 +2588,7 @@ return 0; } - ret = msgdsize(msg); + ret = (int)msgdsize(msg); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ortp-4.5.20/src/rtpsession_inet.c new/ortp-5.0.0/src/rtpsession_inet.c --- old/ortp-4.5.20/src/rtpsession_inet.c 2021-03-23 14:09:09.000000000 +0100 +++ new/ortp-5.0.0/src/rtpsession_inet.c 2021-07-07 16:37:12.000000000 +0200 @@ -265,9 +265,9 @@ if (ortp_WSARecvMsg == NULL) { GUID guid = WSAID_WSARECVMSG; DWORD bytes_returned; - if (WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid, sizeof(guid), + if ( WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid, sizeof(guid), &ortp_WSARecvMsg, sizeof(ortp_WSARecvMsg), &bytes_returned, NULL, NULL) == SOCKET_ERROR) { - ortp_warning("WSARecvMsg function not found."); + ortp_warning("WSARecvMsg function not found [%d].", WSAGetLastError()); } } #endif @@ -662,7 +662,7 @@ if (session->rtp.gs.socket == (ortp_socket_t)-1) return 0; #if (_WIN32_WINNT >= 0x0600) && defined(ORTP_WINDOWS_DESKTOP) -#ifndef ENABLE_MICROSOFT_STORE_APP +#if !defined(ENABLE_MICROSOFT_STORE_APP) && !defined(ORTP_WINDOWS_UWP) ortp_message("check OS support for qwave.lib"); if (IsWindowsVistaOrGreater()) { if (session->dscp==0) @@ -736,7 +736,7 @@ } } #if (_WIN32_WINNT >= 0x0600) && defined(ORTP_WINDOWS_DESKTOP) -#ifndef ENABLE_MICROSOFT_STORE_APP +#if !defined(ENABLE_MICROSOFT_STORE_APP) && !defined(ORTP_WINDOWS_UWP) } #endif // ENABLE_MICROSOFT_STORE_APP #endif @@ -1017,7 +1017,7 @@ #if defined(_WIN32) || defined(_WIN32_WCE) #define MAX_BUF 64 -static int rtp_sendmsg(int sock, mblk_t *m, const struct sockaddr *rem_addr, socklen_t addr_len) { +static int rtp_sendmsg(ortp_socket_t sock, mblk_t *m, const struct sockaddr *rem_addr, socklen_t addr_len) { WSAMSG msg = {0}; WSABUF wsabuf[MAX_BUF]; DWORD dwBytes = 0; @@ -1030,10 +1030,12 @@ struct sockaddr_storage v4, v6Mapped; socklen_t v4Len=0, v6MappedLen=0; bool_t useV4 = FALSE; + struct sockaddr remote_address = {0}; + struct addrinfo* feed_server = NULL; for (wsabufLen = 0; wsabufLen < MAX_BUF && mTrack != NULL; mTrack = mTrack->b_cont, ++wsabufLen) { + wsabuf[wsabufLen].len = (ULONG)(mTrack->b_wptr - mTrack->b_rptr); wsabuf[wsabufLen].buf = mTrack->b_rptr; - wsabuf[wsabufLen].len = mTrack->b_wptr - mTrack->b_rptr; } msg.lpBuffers = wsabuf; // contents msg.dwBufferCount = wsabufLen; @@ -1045,8 +1047,14 @@ } ortp_error("Too long msgb (%i fragments) , didn't fit into iov, end discarded.", MAX_BUF + count); } - msg.name = (SOCKADDR *)rem_addr; - msg.namelen = addr_len; + if( addr_len == 0){ + // Get the local host information + msg.namelen = 0; + msg.name = NULL; + }else{ + msg.namelen = addr_len; + msg.name = (SOCKADDR *)rem_addr; + } msg.Control.buf = ctrlBuffer; msg.Control.len = sizeof(ctrlBuffer); cmsg = WSA_CMSG_FIRSTHDR(&msg); @@ -1085,22 +1093,26 @@ msg.Control.len = controlSize; if (controlSize == 0) msg.Control.buf = NULL; - error = WSASendMsg(sock, &msg, 0, &dwBytes, NULL, NULL); - if( error == SOCKET_ERROR && controlSize != 0){ + error = WSASendMsg((SOCKET)sock, &msg, 0, &dwBytes, NULL, NULL); + if( error == SOCKET_ERROR && controlSize != 0){// Debug note : if unexpected WSAEFAULT, check the location of memory allocation of msg. It must be on ortp addresses space. int errorCode = WSAGetLastError(); if( errorCode == WSAEINVAL || errorCode==WSAENETUNREACH || errorCode==WSAEFAULT) { msg.Control.len = 0; msg.Control.buf = NULL; - error = WSASendMsg(sock, &msg, 0, &dwBytes, NULL, NULL); + error = WSASendMsg((SOCKET)sock, &msg, 0, &dwBytes, NULL, NULL); } } - return dwBytes;// Return the bytes that have been sent + mTrack = m; + if(error >= 0) + return dwBytes;// Return the bytes that have been sent + else + return error; } #else #ifdef USE_SENDMSG #define MAX_IOV 64 -static int rtp_sendmsg(int sock,mblk_t *m, const struct sockaddr *rem_addr, socklen_t addr_len){ +static int rtp_sendmsg(ortp_socket_t sock,mblk_t *m, const struct sockaddr *rem_addr, socklen_t addr_len){ struct msghdr msg; struct iovec iov[MAX_IOV]; int iovlen; @@ -1210,11 +1222,11 @@ msg.msg_controllen = controlSize; if( controlSize==0) // Have to reset msg_control to NULL as msg_controllen is not sufficient on some platforms msg.msg_control = NULL; - error = sendmsg(sock,&msg,0); + error = sendmsg((int)sock,&msg,0); if( error == -1 && controlSize != 0 && (errno == EINVAL || errno==ENETUNREACH || errno==EFAULT)) { msg.msg_controllen =0; msg.msg_control = NULL; - error = sendmsg(sock,&msg,0); + error = sendmsg((int)sock,&msg,0); } return error; } @@ -1517,7 +1529,6 @@ return error; } #endif - int rtp_session_rtp_recv_abstract(ortp_socket_t socket, mblk_t *msg, int flags, struct sockaddr *from, socklen_t *fromlen) { int ret; int bufsz = (int) (msg->b_datap->db_lim - msg->b_datap->db_base); @@ -1526,8 +1537,8 @@ WSAMSG msghdr = {0}; WSACMSGHDR *cmsghdr; WSABUF data_buf; - DWORD bytes_received; - + DWORD bytes_received=0; + int error = 0; if (ortp_WSARecvMsg == NULL) { return recvfrom(socket, (char *)msg->b_wptr, bufsz, flags, from, fromlen); } @@ -1538,8 +1549,8 @@ } data_buf.buf = (char *)msg->b_wptr; data_buf.len = bufsz; - msghdr.lpBuffers = &data_buf; msghdr.dwBufferCount = 1; + msghdr.lpBuffers = &data_buf; msghdr.Control.buf = control; msghdr.Control.len = sizeof(control); msghdr.dwFlags = flags; @@ -1612,6 +1623,7 @@ memcpy(&msg->net_addr,from,*fromlen); msg->net_addrlen = *fromlen; } + }else{ } return ret; } @@ -1921,7 +1933,11 @@ { if (session->on_network_error.count>0){ rtp_signal_table_emit3(&session->on_network_error,"Error receiving RTP packet",ORTP_INT_TO_POINTER(getSocketErrorCode())); - }else ortp_warning("Error receiving RTP packet: %s, err num [%i],error [%i]",getSocketError(),errnum,error); + #ifdef _WIN32 + }else if(errnum!=WSAECONNRESET) ortp_warning("Error receiving RTP packet err num [%i], error [%i]: %s",errnum,error,getSocketError());// Windows spam WSAECONNRESET and is not useful + #else + }else ortp_warning("Error receiving RTP packet err num [%i], error [%i]: %s",errnum,error,getSocketError()); + #endif #if TARGET_OS_IPHONE /*hack for iOS and non-working socket because of background mode*/ if (errnum==ENOTCONN){ @@ -2041,7 +2057,11 @@ { if (session->on_network_error.count>0){ rtp_signal_table_emit3(&session->on_network_error,"Error receiving RTCP packet",ORTP_INT_TO_POINTER(getSocketErrorCode())); +#ifdef _WIN32 + }else if(errnum!=WSAECONNRESET) ortp_warning("Error receiving RTCP packet: %s, err num [%i],error [%i]",getSocketError(),errnum,error);// Windows spam WSAECONNRESET and is not useful +#else }else ortp_warning("Error receiving RTCP packet: %s, err num [%i],error [%i]",getSocketError(),errnum,error); +#endif #if TARGET_OS_IPHONE /*hack for iOS and non-working socket because of background mode*/ if (errnum==ENOTCONN){