account.hpp   account.hpp 
/* $Id: account.hpp 4704 2014-01-16 05:30:46Z ming $ */ /* $Id: account.hpp 4889 2014-08-18 09:09:18Z bennylp $ */
/* /*
* Copyright (C) 2013 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
skipping to change at line 563 skipping to change at line 563
* \a pjsua_contact_rewrite_method. See also pjsua_contact_rewrite_meth od. * \a pjsua_contact_rewrite_method. See also pjsua_contact_rewrite_meth od.
* *
* Value PJSUA_CONTACT_REWRITE_UNREGISTER(1) is the legacy behavior. * Value PJSUA_CONTACT_REWRITE_UNREGISTER(1) is the legacy behavior.
* *
* Default value: PJSUA_CONTACT_REWRITE_METHOD * Default value: PJSUA_CONTACT_REWRITE_METHOD
* (PJSUA_CONTACT_REWRITE_NO_UNREG | PJSUA_CONTACT_REWRITE_ALWAYS_UPD ATE) * (PJSUA_CONTACT_REWRITE_NO_UNREG | PJSUA_CONTACT_REWRITE_ALWAYS_UPD ATE)
*/ */
int contactRewriteMethod; int contactRewriteMethod;
/** /**
* Specify if source TCP port should be used as the initial Contact
* address if TCP/TLS transport is used. Note that this feature will
* be automatically turned off when nameserver is configured because
* it may yield different destination address due to DNS SRV resolution
.
* Also some platforms are unable to report the local address of the
* TCP socket when it is still connecting. In these cases, this
* feature will also be turned off.
*
* Default: 1 (yes).
*/
int contactUseSrcPort;
/**
* This option is used to overwrite the "sent-by" field of the Via head er * This option is used to overwrite the "sent-by" field of the Via head er
* for outgoing messages with the same interface address as the one in * for outgoing messages with the same interface address as the one in
* the REGISTER request, as long as the request uses the same transport * the REGISTER request, as long as the request uses the same transport
* instance as the previous REGISTER request. * instance as the previous REGISTER request.
* *
* Default: TRUE * Default: TRUE
*/ */
int viaRewriteUse; int viaRewriteUse;
/** /**
 End of changes. 2 change blocks. 
1 lines changed or deleted 15 lines changed or added


 config.h   config.h 
/* $Id: config.h 4795 2014-03-14 06:58:10Z riza $ */ /* $Id: config.h 4913 2014-09-03 08:39:58Z nanang $ */
/* /*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
skipping to change at line 1151 skipping to change at line 1151
#if !defined(PJ_THREAD_ALLOCATE_STACK) #if !defined(PJ_THREAD_ALLOCATE_STACK)
# error "PJ_THREAD_ALLOCATE_STACK should be defined in compat/os_xx.h" # error "PJ_THREAD_ALLOCATE_STACK should be defined in compat/os_xx.h"
#endif #endif
PJ_BEGIN_DECL PJ_BEGIN_DECL
/** PJLIB version major number. */ /** PJLIB version major number. */
#define PJ_VERSION_NUM_MAJOR 2 #define PJ_VERSION_NUM_MAJOR 2
/** PJLIB version minor number. */ /** PJLIB version minor number. */
#define PJ_VERSION_NUM_MINOR 2 #define PJ_VERSION_NUM_MINOR 3
/** PJLIB version revision number. */ /** PJLIB version revision number. */
#define PJ_VERSION_NUM_REV 1 #define PJ_VERSION_NUM_REV 0
/** /**
* Extra suffix for the version (e.g. "-trunk"), or empty for * Extra suffix for the version (e.g. "-trunk"), or empty for
* web release version. * web release version.
*/ */
#define PJ_VERSION_NUM_EXTRA "" #define PJ_VERSION_NUM_EXTRA ""
/** /**
* PJLIB version number consists of three bytes with the following format: * PJLIB version number consists of three bytes with the following format:
* 0xMMIIRR00, where MM: major number, II: minor number, RR: revision * 0xMMIIRR00, where MM: major number, II: minor number, RR: revision
 End of changes. 3 change blocks. 
3 lines changed or deleted 3 lines changed or added


 config_site_sample.h   config_site_sample.h 
skipping to change at line 379 skipping to change at line 379
#undef PJ_HAS_FLOATING_POINT #undef PJ_HAS_FLOATING_POINT
#define PJ_HAS_FLOATING_POINT 0 #define PJ_HAS_FLOATING_POINT 0
/* /*
* PJMEDIA settings * PJMEDIA settings
*/ */
/* We have our own OpenSL ES backend */ /* We have our own OpenSL ES backend */
#define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0
#define PJMEDIA_AUDIO_DEV_HAS_WMME 0 #define PJMEDIA_AUDIO_DEV_HAS_WMME 0
#define PJMEDIA_AUDIO_DEV_HAS_OPENSL 1 #define PJMEDIA_AUDIO_DEV_HAS_OPENSL 0
#define PJMEDIA_AUDIO_DEV_HAS_ANDROID_JNI 0 #define PJMEDIA_AUDIO_DEV_HAS_ANDROID_JNI 1
/* Disable some codecs */ /* Disable some codecs */
#define PJMEDIA_HAS_L16_CODEC 0 #define PJMEDIA_HAS_L16_CODEC 0
#define PJMEDIA_HAS_G722_CODEC 0 #define PJMEDIA_HAS_G722_CODEC 0
/* Fine tune Speex's default settings for best performance/quality */ /* Fine tune Speex's default settings for best performance/quality */
#define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5
/* /*
* PJSIP settings. * PJSIP settings.
 End of changes. 1 change blocks. 
2 lines changed or deleted 2 lines changed or added


 endpoint.hpp   endpoint.hpp 
/* $Id: endpoint.hpp 4704 2014-01-16 05:30:46Z ming $ */ /* $Id: endpoint.hpp 4887 2014-08-13 09:14:53Z nanang $ */
/* /*
* Copyright (C) 2013 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
skipping to change at line 30 skipping to change at line 30
#define __PJSUA2_UA_HPP__ #define __PJSUA2_UA_HPP__
/** /**
* @file pjsua2/endpoint.hpp * @file pjsua2/endpoint.hpp
* @brief PJSUA2 Base Agent Operation * @brief PJSUA2 Base Agent Operation
*/ */
#include <pjsua2/persistent.hpp> #include <pjsua2/persistent.hpp>
#include <pjsua2/media.hpp> #include <pjsua2/media.hpp>
#include <pjsua2/siptypes.hpp> #include <pjsua2/siptypes.hpp>
#include <list> #include <list>
#include <map>
/** PJSUA2 API is inside pj namespace */ /** PJSUA2 API is inside pj namespace */
namespace pj namespace pj
{ {
/** /**
* @defgroup PJSUA2_UA Endpoint * @defgroup PJSUA2_UA Endpoint
* @ingroup PJSUA2_Ref * @ingroup PJSUA2_Ref
* @{ * @{
*/ */
skipping to change at line 717 skipping to change at line 718
void libInit( const EpConfig &prmEpConfig) throw(Error); void libInit( const EpConfig &prmEpConfig) throw(Error);
/** /**
* Call this function after all initialization is done, so that the * Call this function after all initialization is done, so that the
* library can do additional checking set up. Application may call this * library can do additional checking set up. Application may call this
* function any time after init(). * function any time after init().
*/ */
void libStart() throw(Error); void libStart() throw(Error);
/** /**
* Register a thread to poll for events. This function should be * Register a thread that was created by external or native API to the
* called by an external worker thread, and it will block polling * library. Note that each time this function is called, it will alloca
* for events until the library is destroyed. te
* some memory to store the thread description, which will only be free
d
* when the library is destroyed.
*
* @param name The optional name to be assigned to the thread.
*/
void libRegisterThread(const string &name) throw(Error);
/**
* Check if this thread has been registered to the library. Note that
* this function is only applicable for library main & worker threads a
nd
* external/native threads registered using libRegisterThread().
*/ */
void libRegisterWorkerThread(const string &name) throw(Error); bool libIsThreadRegistered();
/** /**
* Stop all worker threads. * Stop all worker threads.
*/ */
void libStopWorkerThreads(); void libStopWorkerThreads();
/** /**
* Poll pjsua for events, and if necessary block the caller thread for * Poll pjsua for events, and if necessary block the caller thread for
* the specified maximum interval (in miliseconds). * the specified maximum interval (in miliseconds).
* *
skipping to change at line 1166 skipping to change at line 1177
*/ */
virtual void onSelectAccount(OnSelectAccountParam &prm) virtual void onSelectAccount(OnSelectAccountParam &prm)
{ PJ_UNUSED_ARG(prm); } { PJ_UNUSED_ARG(prm); }
private: private:
static Endpoint *instance_; // static instance static Endpoint *instance_; // static instance
LogWriter *writer; // Custom writer, if any LogWriter *writer; // Custom writer, if any
AudioMediaVector mediaList; AudioMediaVector mediaList;
AudDevManager audioDevMgr; AudDevManager audioDevMgr;
CodecInfoVector codecInfoList; CodecInfoVector codecInfoList;
std::map<pj_thread_t*, pj_thread_desc*> threadDescMap;
/* Pending logging */ /* Pending logging */
bool mainThreadOnly; bool mainThreadOnly;
void *mainThread; void *mainThread;
unsigned pendingJobSize; unsigned pendingJobSize;
std::list<PendingJob*> pendingJobs; std::list<PendingJob*> pendingJobs;
void performPendingJobs(); void performPendingJobs();
/* Endpoint static callbacks */ /* Endpoint static callbacks */
 End of changes. 5 change blocks. 
5 lines changed or deleted 20 lines changed or added


 event.h   event.h 
/* $Id: event.h 3905 2011-12-09 05:15:39Z ming $ */ /* $Id: event.h 4815 2014-04-10 10:01:07Z bennylp $ */
/* /*
* Copyright (C) 2011-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2011-2011 Teluu Inc. (http://www.teluu.com)
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
skipping to change at line 243 skipping to change at line 243
typedef pj_status_t pjmedia_event_cb(pjmedia_event *event, typedef pj_status_t pjmedia_event_cb(pjmedia_event *event,
void *user_data); void *user_data);
/** /**
* This enumeration describes flags for event publication via * This enumeration describes flags for event publication via
* #pjmedia_event_publish(). * #pjmedia_event_publish().
*/ */
typedef enum pjmedia_event_publish_flag typedef enum pjmedia_event_publish_flag
{ {
/** /**
* Default flag.
*/
PJMEDIA_EVENT_PUBLISH_DEFAULT,
/**
* Publisher will only post the event to the event manager. It is the * Publisher will only post the event to the event manager. It is the
* event manager that will later notify all the publisher's subscribers . * event manager that will later notify all the publisher's subscribers .
*/ */
PJMEDIA_EVENT_PUBLISH_POST_EVENT = 1 PJMEDIA_EVENT_PUBLISH_POST_EVENT = 1
} pjmedia_event_publish_flag; } pjmedia_event_publish_flag;
/** /**
* Event manager flag. * Event manager flag.
*/ */
 End of changes. 2 change blocks. 
1 lines changed or deleted 6 lines changed or added


 media.hpp   media.hpp 
/* $Id: media.hpp 4793 2014-03-14 04:09:50Z bennylp $ */ /* $Id: media.hpp 4845 2014-05-19 05:51:10Z bennylp $ */
/* /*
* Copyright (C) 2013 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
skipping to change at line 513 skipping to change at line 513
*/ */
virtual ~AudioMediaRecorder(); virtual ~AudioMediaRecorder();
private: private:
/** /**
* Recorder Id. * Recorder Id.
*/ */
int recorderId; int recorderId;
}; };
/**
* Tone descriptor (abstraction for pjmedia_tone_desc)
*/
class ToneDesc : public pjmedia_tone_desc
{
public:
ToneDesc()
{
pj_bzero(this, sizeof(*this));
}
~ToneDesc() {}
};
/**
* Array of tone descriptor.
*/
typedef std::vector<ToneDesc> ToneDescVector;
/**
* Tone digit (abstraction for pjmedia_tone_digit)
*/
class ToneDigit : public pjmedia_tone_digit
{
public:
ToneDigit()
{
pj_bzero(this, sizeof(*this));
}
~ToneDigit() {}
};
/**
* Array of tone digits.
*/
typedef std::vector<ToneDigit> ToneDigitVector;
/**
* A digit in tone digit map
*/
struct ToneDigitMapDigit
{
public:
string digit;
int freq1;
int freq2;
};
/**
* Tone digit map
*/
typedef std::vector<ToneDigitMapDigit> ToneDigitMapVector;
/**
* Tone generator.
*/
class ToneGenerator : public AudioMedia
{
public:
/**
* Constructor.
*/
ToneGenerator();
/**
* Destructor.
*/
~ToneGenerator();
/**
* Create tone generator.
*/
void createToneGenerator(unsigned clock_rate = 16000,
unsigned channel_count = 1) throw(Error);
/**
* Check if the tone generator is still busy producing some tones.
* @return Non-zero if busy.
*/
bool isBusy() const;
/**
* Instruct the tone generator to stop current processing.
*/
void stop() throw(Error);
/**
* Rewind the playback. This will start the playback to the first
* tone in the playback list.
*/
void rewind() throw(Error);
/**
* Instruct the tone generator to play single or dual frequency tones
* with the specified duration. The new tones will be appended to
* currently playing tones, unless stop() is called before calling this
* function. The playback will begin as soon as the tone generator is
* connected to other media.
*
* @param tones Array of tones to be played.
* @param loop Play the tone in a loop.
*/
void play(const ToneDescVector &tones,
bool loop=false) throw(Error);
/**
* Instruct the tone generator to play multiple MF digits with each of
* the digits having individual ON/OFF duration. Each of the digit in t
he
* digit array must have the corresponding descriptor in the digit map.
* The new tones will be appended to currently playing tones, unless
* stop() is called before calling this function. The playback will beg
in
* as soon as the tone generator is connected to a sink media.
*
* @param digits Array of MF digits.
* @param loop Play the tone in a loop.
*/
void playDigits(const ToneDigitVector &digits,
bool loop=false) throw(Error);
/**
* Get the digit-map currently used by this tone generator.
*
* @return The digitmap currently used by the tone generato
r
*/
ToneDigitMapVector getDigitMap() const throw(Error);
/**
* Set digit map to be used by the tone generator.
*
* @param digit_map Digitmap to be used by the tone generato
r.
*/
void setDigitMap(const ToneDigitMapVector &digit_map) throw(Error);
private:
pj_pool_t *pool;
pjmedia_port *tonegen;
pjmedia_tone_digit_map digitMap;
};
/************************************************************************* /*************************************************************************
* Sound device management * Sound device management
*/ */
/** /**
* Audio device information structure. * Audio device information structure.
*/ */
struct AudioDevInfo struct AudioDevInfo
{ {
/** /**
 End of changes. 2 change blocks. 
1 lines changed or deleted 143 lines changed or added


 pjmedia-codec.h   pjmedia-codec.h 
/* $Id: pjmedia-codec.h 4331 2013-01-23 06:18:18Z ming $ */ /* $Id: pjmedia-codec.h 4815 2014-04-10 10:01:07Z bennylp $ */
/* /*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
skipping to change at line 38 skipping to change at line 38
#include <pjmedia-codec/audio_codecs.h> #include <pjmedia-codec/audio_codecs.h>
#include <pjmedia-codec/l16.h> #include <pjmedia-codec/l16.h>
#include <pjmedia-codec/ffmpeg_vid_codecs.h> #include <pjmedia-codec/ffmpeg_vid_codecs.h>
#include <pjmedia-codec/gsm.h> #include <pjmedia-codec/gsm.h>
#include <pjmedia-codec/speex.h> #include <pjmedia-codec/speex.h>
#include <pjmedia-codec/ilbc.h> #include <pjmedia-codec/ilbc.h>
#include <pjmedia-codec/g722.h> #include <pjmedia-codec/g722.h>
#include <pjmedia-codec/g7221.h> #include <pjmedia-codec/g7221.h>
#include <pjmedia-codec/ipp_codecs.h> #include <pjmedia-codec/ipp_codecs.h>
#include <pjmedia-codec/opencore_amr.h> #include <pjmedia-codec/opencore_amr.h>
#include <pjmedia-codec/openh264.h>
#include <pjmedia-codec/passthrough.h> #include <pjmedia-codec/passthrough.h>
#include <pjmedia-codec/silk.h> #include <pjmedia-codec/silk.h>
#endif /* __PJMEDIA_CODEC_PJMEDIA_CODEC_H__ */ #endif /* __PJMEDIA_CODEC_PJMEDIA_CODEC_H__ */
 End of changes. 2 change blocks. 
1 lines changed or deleted 2 lines changed or added


 sip_config.h   sip_config.h 
/* $Id: sip_config.h 4770 2014-02-27 06:16:36Z nanang $ */ /* $Id: sip_config.h 4899 2014-08-21 05:58:36Z nanang $ */
/* /*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
skipping to change at line 140 skipping to change at line 140
pj_bool_t follow_early_media_fork; pj_bool_t follow_early_media_fork;
/** /**
* Specify whether "alias" param should be added to the Via header * Specify whether "alias" param should be added to the Via header
* in any outgoing request with connection oriented transport. * in any outgoing request with connection oriented transport.
* *
* Default is PJSIP_REQ_HAS_VIA_ALIAS. * Default is PJSIP_REQ_HAS_VIA_ALIAS.
*/ */
pj_bool_t req_has_via_alias; pj_bool_t req_has_via_alias;
/**
* Resolve hostname when trying to get the network interface to be p
ut
* in Via or Contact header.
*
* Default is PJSIP_RESOLVE_HOSTNAME_TO_GET_INTERFACE.
*/
pj_bool_t resolve_hostname_to_get_interface;
/**
* Disable security check on incoming messages in a secure dialog.
* A secure dialog is created when the request that creates the dial
og
* uses "sips" scheme in its request URI. Contact URI should use "si
ps"
* scheme and the top-most Record-Route URI, if any, should use eith
er
* "sips" scheme or "transport=tls" param. See also
* https://trac.pjsip.org/repos/ticket/1735.
*
* Default is PJ_FALSE.
*/
pj_bool_t disable_secure_dlg_check;
} endpt; } endpt;
/** Transaction layer settings. */ /** Transaction layer settings. */
struct { struct {
/** Maximum number of transactions. The value is initialized with /** Maximum number of transactions. The value is initialized with
* PJSIP_MAX_TSX_COUNT * PJSIP_MAX_TSX_COUNT
*/ */
unsigned max_count; unsigned max_count;
skipping to change at line 356 skipping to change at line 376
* This option can also be controlled at run-time by the * This option can also be controlled at run-time by the
* \a req_has_via_alias setting in pjsip_cfg_t. * \a req_has_via_alias setting in pjsip_cfg_t.
* *
* Default is PJ_TRUE. * Default is PJ_TRUE.
*/ */
#ifndef PJSIP_REQ_HAS_VIA_ALIAS #ifndef PJSIP_REQ_HAS_VIA_ALIAS
# define PJSIP_REQ_HAS_VIA_ALIAS PJ_TRUE # define PJSIP_REQ_HAS_VIA_ALIAS PJ_TRUE
#endif #endif
/** /**
* Resolve hostname when trying to get the network interface to be put in V
ia
* or Contact header.
*
* This option can also be controlled at run-time by the
* \a resolve_hostname_to_get_interface setting in pjsip_cfg_t.
*
* Default is PJ_FALSE.
*/
#ifndef PJSIP_RESOLVE_HOSTNAME_TO_GET_INTERFACE
# define PJSIP_RESOLVE_HOSTNAME_TO_GET_INTERFACE PJ_FALSE
#endif
/**
* Accept call replace in early state when invite is not initiated * Accept call replace in early state when invite is not initiated
* by the user agent. RFC 3891 Section 3 disallows this, however, * by the user agent. RFC 3891 Section 3 disallows this, however,
* for better interoperability reason, this might be ignored. * for better interoperability reason, this might be ignored.
* *
* This option can also be controlled at run-time by the * This option can also be controlled at run-time by the
* \a accept_replace_in_early_state setting in pjsip_cfg_t. * \a accept_replace_in_early_state setting in pjsip_cfg_t.
* *
* Default is 0 (no). * Default is 0 (no).
*/ */
#ifndef PJSIP_ACCEPT_REPLACE_IN_EARLY_STATE #ifndef PJSIP_ACCEPT_REPLACE_IN_EARLY_STATE
 End of changes. 3 change blocks. 
1 lines changed or deleted 39 lines changed or added


 sip_transport_tcp.h   sip_transport_tcp.h 
/* $Id: sip_transport_tcp.h 4506 2013-04-26 06:01:43Z bennylp $ */ /* $Id: sip_transport_tcp.h 4860 2014-06-19 05:07:12Z riza $ */
/* /*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
skipping to change at line 105 skipping to change at line 105
/** /**
* Set the low level QoS parameters to the transport. This is a lower * Set the low level QoS parameters to the transport. This is a lower
* level operation than setting the \a qos_type field and may not be * level operation than setting the \a qos_type field and may not be
* supported on all platforms. * supported on all platforms.
* *
* Default is QoS not set. * Default is QoS not set.
*/ */
pj_qos_params qos_params; pj_qos_params qos_params;
/**
* Specify options to be set on the transport.
*
* By default there is no options.
*
*/
pj_sockopt_params sockopt_params;
} pjsip_tcp_transport_cfg; } pjsip_tcp_transport_cfg;
/** /**
* Initialize pjsip_tcp_transport_cfg structure with default values for * Initialize pjsip_tcp_transport_cfg structure with default values for
* the specifed address family. * the specifed address family.
* *
* @param cfg The structure to initialize. * @param cfg The structure to initialize.
* @param af Address family to be used. * @param af Address family to be used.
*/ */
PJ_DECL(void) pjsip_tcp_transport_cfg_default(pjsip_tcp_transport_cfg *cfg, PJ_DECL(void) pjsip_tcp_transport_cfg_default(pjsip_tcp_transport_cfg *cfg,
skipping to change at line 201 skipping to change at line 209
* @return PJ_SUCCESS when the transport has been successfully * @return PJ_SUCCESS when the transport has been successfully
* started and registered to transport manager, or * started and registered to transport manager, or
* the appropriate error code. * the appropriate error code.
*/ */
PJ_DECL(pj_status_t) pjsip_tcp_transport_start3( PJ_DECL(pj_status_t) pjsip_tcp_transport_start3(
pjsip_endpoint *endpt, pjsip_endpoint *endpt,
const pjsip_tcp_transport_cfg *cfg, const pjsip_tcp_transport_cfg *cfg,
pjsip_tpfactory **p_factory pjsip_tpfactory **p_factory
); );
/**
* Retrieve the internal socket handle used by the TCP transport. Note
* that this socket normally is registered to ioqueue, so application
* needs to take care not to perform operation that disrupts ioqueue
* operation.
*
* @param transport The TCP transport.
*
* @return The socket handle, or PJ_INVALID_SOCKET if no socket
* is currently being used.
*/
PJ_DECL(pj_sock_t) pjsip_tcp_transport_get_socket(pjsip_transport *transpor
t);
PJ_END_DECL PJ_END_DECL
/** /**
* @} * @}
*/ */
#endif /* PJ_HAS_TCP */ #endif /* PJ_HAS_TCP */
#endif /* __PJSIP_TRANSPORT_TCP_H__ */ #endif /* __PJSIP_TRANSPORT_TCP_H__ */
 End of changes. 3 change blocks. 
1 lines changed or deleted 23 lines changed or added


 sip_transport_tls.h   sip_transport_tls.h 
/* $Id: sip_transport_tls.h 4506 2013-04-26 06:01:43Z bennylp $ */ /* $Id: sip_transport_tls.h 4860 2014-06-19 05:07:12Z riza $ */
/* /*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
skipping to change at line 204 skipping to change at line 204
pj_qos_params qos_params; pj_qos_params qos_params;
/** /**
* Specify if the transport should ignore any errors when setting the Q oS * Specify if the transport should ignore any errors when setting the Q oS
* traffic type/parameters. * traffic type/parameters.
* *
* Default: PJ_TRUE * Default: PJ_TRUE
*/ */
pj_bool_t qos_ignore_error; pj_bool_t qos_ignore_error;
/**
* Specify options to be set on the transport.
*
* By default there is no options.
*
*/
pj_sockopt_params sockopt_params;
/**
* Specify if the transport should ignore any errors when setting the
* sockopt parameters.
*
* Default: PJ_TRUE
*
*/
pj_bool_t sockopt_ignore_error;
} pjsip_tls_setting; } pjsip_tls_setting;
/** /**
* This structure defines TLS transport extended info in <tt>ext_info</tt> * This structure defines TLS transport extended info in <tt>ext_info</tt>
* field of #pjsip_transport_state_info for the transport state notificatio n * field of #pjsip_transport_state_info for the transport state notificatio n
* callback #pjsip_tp_state_callback. * callback #pjsip_tp_state_callback.
*/ */
typedef struct pjsip_tls_state_info typedef struct pjsip_tls_state_info
{ {
/** /**
skipping to change at line 231 skipping to change at line 248
* Initialize TLS setting with default values. * Initialize TLS setting with default values.
* *
* @param tls_opt The TLS setting to be initialized. * @param tls_opt The TLS setting to be initialized.
*/ */
PJ_INLINE(void) pjsip_tls_setting_default(pjsip_tls_setting *tls_opt) PJ_INLINE(void) pjsip_tls_setting_default(pjsip_tls_setting *tls_opt)
{ {
pj_memset(tls_opt, 0, sizeof(*tls_opt)); pj_memset(tls_opt, 0, sizeof(*tls_opt));
tls_opt->reuse_addr = PJSIP_TLS_TRANSPORT_REUSEADDR; tls_opt->reuse_addr = PJSIP_TLS_TRANSPORT_REUSEADDR;
tls_opt->qos_type = PJ_QOS_TYPE_BEST_EFFORT; tls_opt->qos_type = PJ_QOS_TYPE_BEST_EFFORT;
tls_opt->qos_ignore_error = PJ_TRUE; tls_opt->qos_ignore_error = PJ_TRUE;
tls_opt->sockopt_ignore_error = PJ_TRUE;
} }
/** /**
* Copy TLS setting. * Copy TLS setting.
* *
* @param pool The pool to duplicate strings etc. * @param pool The pool to duplicate strings etc.
* @param dst Destination structure. * @param dst Destination structure.
* @param src Source structure. * @param src Source structure.
*/ */
PJ_INLINE(void) pjsip_tls_setting_copy(pj_pool_t *pool, PJ_INLINE(void) pjsip_tls_setting_copy(pj_pool_t *pool,
 End of changes. 3 change blocks. 
1 lines changed or deleted 19 lines changed or added


 sip_util.h   sip_util.h 
/* $Id: sip_util.h 4347 2013-02-13 10:19:25Z nanang $ */ /* $Id: sip_util.h 4888 2014-08-18 08:54:43Z bennylp $ */
/* /*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
skipping to change at line 368 skipping to change at line 368
* @param tdata The transmit buffer for the request being cancel led. * @param tdata The transmit buffer for the request being cancel led.
* @param p_tdata Pointer to receive the transmit data. * @param p_tdata Pointer to receive the transmit data.
* *
* @return PJ_SUCCESS, or the appropriate error code. * @return PJ_SUCCESS, or the appropriate error code.
*/ */
PJ_DECL(pj_status_t) pjsip_endpt_create_cancel( pjsip_endpoint *endpt, PJ_DECL(pj_status_t) pjsip_endpt_create_cancel( pjsip_endpoint *endpt,
const pjsip_tx_data *tdata, const pjsip_tx_data *tdata,
pjsip_tx_data **p_tdata); pjsip_tx_data **p_tdata);
/** /**
* Get destination address and port and transport type information for the
* specified URI.
*
* @param target_uri The destination URI.
* @param request_uri Optional request URI to be considered. May be NULL.
* @param pool Pool to allocate memory from.
* @param dest_info To be filled with destination info.
*
* @return PJ_SUCCESS or the appropriate error code.
*/
PJ_DECL(pj_status_t) pjsip_get_dest_info(const pjsip_uri *target_uri,
const pjsip_uri *request_uri,
pj_pool_t *pool,
pjsip_host_info *dest_info);
/**
* Find which destination to be used to send the request message, based * Find which destination to be used to send the request message, based
* on the request URI and Route headers in the message. The procedure * on the request URI and Route headers in the message. The procedure
* used here follows the guidelines on sending the request in RFC 3261 * used here follows the guidelines on sending the request in RFC 3261
* chapter 8.1.2. * chapter 8.1.2.
* *
* Note there was a change in the behavior of this function since version * Note there was a change in the behavior of this function since version
* 0.5.10.2. Previously this function may modify the request when strict * 0.5.10.2. Previously this function may modify the request when strict
* route is present (to update request URI and route-set). This is no * route is present (to update request URI and route-set). This is no
* longer the case now, and this process is done in separate function * longer the case now, and this process is done in separate function
* (see #pjsip_process_route_set()). * (see #pjsip_process_route_set()).
 End of changes. 2 change blocks. 
1 lines changed or deleted 17 lines changed or added


 sock.h   sock.h 
/* $Id: sock.h 4538 2013-06-19 09:06:55Z nanang $ */ /* $Id: sock.h 4860 2014-06-19 05:07:12Z riza $ */
/* /*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
skipping to change at line 597 skipping to change at line 597
} pj_sockaddr; } pj_sockaddr;
/** /**
* This structure provides multicast group information for IPv4 addresses. * This structure provides multicast group information for IPv4 addresses.
*/ */
typedef struct pj_ip_mreq { typedef struct pj_ip_mreq {
pj_in_addr imr_multiaddr; /**< IP multicast address of group. */ pj_in_addr imr_multiaddr; /**< IP multicast address of group. */
pj_in_addr imr_interface; /**< local IP address of interface. */ pj_in_addr imr_interface; /**< local IP address of interface. */
} pj_ip_mreq; } pj_ip_mreq;
/* Maximum number of socket options. */
#define PJ_MAX_SOCKOPT_PARAMS 4
/**
* Options to be set for the socket.
*/
typedef struct pj_sockopt_params
{
/* The number of options to be applied. */
unsigned cnt;
/* Array of options to be applied. */
struct {
/* The level at which the option is defined. */
int level;
/* Option name. */
int optname;
/* Pointer to the buffer in which the option is specified. */
void *optval;
/* Buffer size of the buffer pointed by optval. */
int optlen;
} options[PJ_MAX_SOCKOPT_PARAMS];
} pj_sockopt_params;
/************************************************************************** *** /************************************************************************** ***
* *
* SOCKET ADDRESS MANIPULATION. * SOCKET ADDRESS MANIPULATION.
* *
************************************************************************** *** ************************************************************************** ***
*/ */
/** /**
* Convert 16-bit value from network byte order to host byte order. * Convert 16-bit value from network byte order to host byte order.
* *
skipping to change at line 1284 skipping to change at line 1311
* *
* @return PJ_SUCCESS or the status code. * @return PJ_SUCCESS or the status code.
*/ */
PJ_DECL(pj_status_t) pj_sock_setsockopt( pj_sock_t sockfd, PJ_DECL(pj_status_t) pj_sock_setsockopt( pj_sock_t sockfd,
pj_uint16_t level, pj_uint16_t level,
pj_uint16_t optname, pj_uint16_t optname,
const void *optval, const void *optval,
int optlen); int optlen);
/** /**
* Set socket options associated with a socket. This method will apply all
the
* options specified, and ignore any errors that might be raised.
*
* @param sockfd The socket descriptor.
* @param params The socket options.
*
* @return PJ_SUCCESS or the last error code.
*/
PJ_DECL(pj_status_t) pj_sock_setsockopt_params( pj_sock_t sockfd,
const pj_sockopt_params *para
ms);
/**
* Helper function to set socket buffer size using #pj_sock_setsockopt() * Helper function to set socket buffer size using #pj_sock_setsockopt()
* with capability to auto retry with lower buffer setting value until * with capability to auto retry with lower buffer setting value until
* the highest possible value is successfully set. * the highest possible value is successfully set.
* *
* @param sockfd The socket descriptor. * @param sockfd The socket descriptor.
* @param optname The option name, valid values are pj_SO_RCVBUF() * @param optname The option name, valid values are pj_SO_RCVBUF()
* and pj_SO_SNDBUF(). * and pj_SO_SNDBUF().
* @param auto_retry Option whether auto retry with lower value is * @param auto_retry Option whether auto retry with lower value is
* enabled. * enabled.
* @param buf_size On input, specify the prefered buffer size setting, * @param buf_size On input, specify the prefered buffer size setting,
 End of changes. 3 change blocks. 
1 lines changed or deleted 42 lines changed or added


 ssl_sock.h   ssl_sock.h 
/* $Id: ssl_sock.h 4506 2013-04-26 06:01:43Z bennylp $ */ /* $Id: ssl_sock.h 4862 2014-06-19 09:42:02Z nanang $ */
/* /*
* Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
skipping to change at line 237 skipping to change at line 237
PJ_DECL(pj_status_t) pj_ssl_cert_get_verify_status_strings( PJ_DECL(pj_status_t) pj_ssl_cert_get_verify_status_strings(
pj_uint32_t verify_status, pj_uint32_t verify_status,
const char *error_strings[] , const char *error_strings[] ,
unsigned *count); unsigned *count);
/** /**
* Cipher suites enumeration. * Cipher suites enumeration.
*/ */
typedef enum pj_ssl_cipher { typedef enum pj_ssl_cipher {
/* Unsupported cipher */
PJ_TLS_UNKNOWN_CIPHER = -1,
/* NULL */ /* NULL */
PJ_TLS_NULL_WITH_NULL_NULL = 0x00000000, PJ_TLS_NULL_WITH_NULL_NULL = 0x00000000,
/* TLS/SSLv3 */ /* TLS/SSLv3 */
PJ_TLS_RSA_WITH_NULL_MD5 = 0x00000001, PJ_TLS_RSA_WITH_NULL_MD5 = 0x00000001,
PJ_TLS_RSA_WITH_NULL_SHA = 0x00000002, PJ_TLS_RSA_WITH_NULL_SHA = 0x00000002,
PJ_TLS_RSA_WITH_NULL_SHA256 = 0x0000003B, PJ_TLS_RSA_WITH_NULL_SHA256 = 0x0000003B,
PJ_TLS_RSA_WITH_RC4_128_MD5 = 0x00000004, PJ_TLS_RSA_WITH_RC4_128_MD5 = 0x00000004,
PJ_TLS_RSA_WITH_RC4_128_SHA = 0x00000005, PJ_TLS_RSA_WITH_RC4_128_SHA = 0x00000005,
PJ_TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x0000000A, PJ_TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x0000000A,
skipping to change at line 343 skipping to change at line 346
* Get cipher name string. * Get cipher name string.
* *
* @param cipher The cipher. * @param cipher The cipher.
* *
* @return The cipher name or NULL if cipher is not recognized/ * @return The cipher name or NULL if cipher is not recognized/
* supported. * supported.
*/ */
PJ_DECL(const char*) pj_ssl_cipher_name(pj_ssl_cipher cipher); PJ_DECL(const char*) pj_ssl_cipher_name(pj_ssl_cipher cipher);
/** /**
* Get cipher ID from cipher name string. * Get cipher ID from cipher name string. Note that on different backends
* (e.g. OpenSSL or Symbian implementation), cipher names may not be
* equivalent for the same cipher ID.
* *
* @param cipher_name The cipher name string. * @param cipher_name The cipher name string.
* *
* @return The cipher ID or PJ_TLS_UNKNOWN_CIPHER if the cipher * @return The cipher ID or PJ_TLS_UNKNOWN_CIPHER if the cipher
* name string is not recognized/supported. * name string is not recognized/supported.
*/ */
PJ_DECL(pj_ssl_cipher) pj_ssl_cipher_id(const char *cipher_name); PJ_DECL(pj_ssl_cipher) pj_ssl_cipher_id(const char *cipher_name);
/** /**
* This structure contains the callbacks to be called by the secure socket. * This structure contains the callbacks to be called by the secure socket.
skipping to change at line 534 skipping to change at line 539
/** /**
* Status of peer certificate verification. * Status of peer certificate verification.
*/ */
pj_uint32_t verify_status; pj_uint32_t verify_status;
/** /**
* Last native error returned by the backend. * Last native error returned by the backend.
*/ */
unsigned long last_native_err; unsigned long last_native_err;
/**
* Group lock assigned to the ioqueue key.
*/
pj_grp_lock_t *grp_lock;
} pj_ssl_sock_info; } pj_ssl_sock_info;
/** /**
* Definition of secure socket creation parameters. * Definition of secure socket creation parameters.
*/ */
typedef struct pj_ssl_sock_param typedef struct pj_ssl_sock_param
{ {
/** /**
* Optional group lock to be assigned to the ioqueue key.
*
* Note that when a secure socket listener is configured with a group
* lock, any new secure socket of an accepted incoming connection
* will have its own group lock created automatically by the library,
* this group lock can be queried via pj_ssl_sock_get_info() in the inf
o
* field pj_ssl_sock_info::grp_lock.
*/
pj_grp_lock_t *grp_lock;
/**
* Specifies socket address family, either pj_AF_INET() and pj_AF_INET6 (). * Specifies socket address family, either pj_AF_INET() and pj_AF_INET6 ().
* *
* Default is pj_AF_INET(). * Default is pj_AF_INET().
*/ */
int sock_af; int sock_af;
/** /**
* Specify socket type, either pj_SOCK_DGRAM() or pj_SOCK_STREAM(). * Specify socket type, either pj_SOCK_DGRAM() or pj_SOCK_STREAM().
* *
* Default is pj_SOCK_STREAM(). * Default is pj_SOCK_STREAM().
skipping to change at line 730 skipping to change at line 751
pj_qos_params qos_params; pj_qos_params qos_params;
/** /**
* Specify if the transport should ignore any errors when setting the Q oS * Specify if the transport should ignore any errors when setting the Q oS
* traffic type/parameters. * traffic type/parameters.
* *
* Default: PJ_TRUE * Default: PJ_TRUE
*/ */
pj_bool_t qos_ignore_error; pj_bool_t qos_ignore_error;
/**
* Specify options to be set on the transport.
*
* By default there is no options.
*
*/
pj_sockopt_params sockopt_params;
/**
* Specify if the transport should ignore any errors when setting the
* sockopt parameters.
*
* Default: PJ_TRUE
*
*/
pj_bool_t sockopt_ignore_error;
} pj_ssl_sock_param; } pj_ssl_sock_param;
/** /**
* Initialize the secure socket parameters for its creation with * Initialize the secure socket parameters for its creation with
* the default values. * the default values.
* *
* @param param The parameter to be initialized. * @param param The parameter to be initialized.
*/ */
PJ_DECL(void) pj_ssl_sock_param_default(pj_ssl_sock_param *param); PJ_DECL(void) pj_ssl_sock_param_default(pj_ssl_sock_param *param);
 End of changes. 6 change blocks. 
2 lines changed or deleted 41 lines changed or added


 transport.h   transport.h 
/* $Id: transport.h 4345 2013-02-13 07:43:32Z nanang $ */ /* $Id: transport.h 4811 2014-04-08 07:25:20Z riza $ */
/* /*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
skipping to change at line 545 skipping to change at line 545
}; };
/** /**
* Initialize transport info. * Initialize transport info.
* *
* @param info Transport info to be initialized. * @param info Transport info to be initialized.
*/ */
PJ_INLINE(void) pjmedia_transport_info_init(pjmedia_transport_info *info) PJ_INLINE(void) pjmedia_transport_info_init(pjmedia_transport_info *info)
{ {
pj_bzero(&info->sock_info, sizeof(pjmedia_sock_info)); pj_bzero(info, sizeof(pjmedia_transport_info));
info->sock_info.rtp_sock = info->sock_info.rtcp_sock = PJ_INVALID_SOCKE T; info->sock_info.rtp_sock = info->sock_info.rtcp_sock = PJ_INVALID_SOCKE T;
info->specific_info_cnt = 0;
} }
/** /**
* Get media transport info from the specified transport and all underlying * Get media transport info from the specified transport and all underlying
* transports if any. The transport also contains information about socket info * transports if any. The transport also contains information about socket info
* which describes the local address of the transport, and would be needed * which describes the local address of the transport, and would be needed
* for example to fill in the "c=" and "m=" line of local SDP. * for example to fill in the "c=" and "m=" line of local SDP.
* *
* @param tp The transport. * @param tp The transport.
* @param info Media transport info to be initialized. * @param info Media transport info to be initialized.
 End of changes. 3 change blocks. 
3 lines changed or deleted 2 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/