Giter VIP home page Giter VIP logo

pjsip / pjproject Goto Github PK

View Code? Open in Web Editor NEW
1.8K 95.0 734.0 42.73 MB

PJSIP project

Home Page: http://www.pjsip.org

License: GNU General Public License v2.0

Makefile 0.63% Shell 2.01% Batchfile 0.01% CSS 0.12% HTML 0.02% C 81.31% Objective-C 1.71% C++ 8.75% Java 0.62% Python 3.02% QMake 0.02% QML 0.01% Pan 0.01% Mathematica 0.47% C# 0.77% SWIG 0.07% Assembly 0.15% Swift 0.21% Kotlin 0.10% Objective-C++ 0.02%
pjsip sip rtp nat-traversal voip android ios android-ndk

pjproject's Introduction

CI Linux CI Mac CI Windows
OSS-Fuzz Coverity-Scan CodeQL docs.pjsip.org

PJSIP

PJSIP is a free and open source multimedia communication library written in C with high level API in C, C++, Java, C#, and Python languages. It implements standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE. It combines signaling protocol (SIP) with rich multimedia framework and NAT traversal functionality into high level API that is portable and suitable for almost any type of systems ranging from desktops, embedded systems, to mobile handsets.

Getting PJSIP

Documentation

Main documentation site: https://docs.pjsip.org

Table of contents:

pjproject's People

Contributors

alexkalmuk avatar amarok1412 avatar amubiera avatar andreas-wehrmann avatar bennylp avatar brad0 avatar gaaf avatar gjasny avatar goodicus avatar gtjoseph avatar hlobit avatar ismangil avatar jimying avatar johado avatar kala13x avatar liviu-rolo avatar lukas-nowak avatar maxtruxa avatar mike2307 avatar mscdex avatar naf419 avatar nanangizz avatar odca117 avatar ryancaicse avatar saghul avatar sauwming avatar silentindark avatar trandi avatar trengginas avatar wosrediinanatour avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pjproject's Issues

Bug in message framing detection

2006-11-24 11:47:15: @bennylp created the issue on trac ticket 4

For TCP, if the remainder of a message contains garbage, it will cause the next valid message to be discarded. For example, consider the following:

INVITE sip:[email protected] SIP/2.0
To: sip:[email protected]
From: sip:[email protected]
Call-ID: [email protected]
CSeq: 8 INVITE
Via: SIP/2.0/TCP 135.180.130.133
Content-Type: application/sdp
Content-Length: 138

v=0
o=mhandley 29739 7272939 IN IP4 126.5.4.3
c=IN IP4 135.180.130.88
m=audio 49210 RTP/AVP 0 12
m=video 3227 RTP/AVP 31
a=rtpmap:31 LPC/8000
asdpasd08asdsdk:;;asd
 a0sdjhg8a0*...*;;;;

With current parsing, the garbage will be prepended to the next message, and it will cause the parsing of the next message to fail.


2006-11-24 11:48:22: @bennylp edited the issue description


2010-01-11 15:58:05: @bennylp changed milestone from unassigned to Known-Issues

Multihomed operations

2006-11-24 12:04:54: @bennylp created the issue on trac ticket 11

When the application is on multihomed host, the library need to help application to find out the correct IP interface to be put in Contact and Via headers and also in SDP connection line.

There are few approaches to this:

  • provide implementation in PJLIB to consult the IP routing table in the host (of course it needs to be portable to all platforms),
  • provide routing query with UDP connect() and cache the result.

2007-01-21 23:28:50: @bennylp changed milestone from release-0.5.10 to release-0.5.11


2007-01-30 19:45:33: [email protected] commented

Well, for incoming connections, we should take that IP address where the request came from.

And right, for outgoing connections, best would probably be to query the SIP socket for the right address.

cheers,
roman


2007-05-16 09:44:26: @bennylp changed milestone from release-0.7.0-rc2 to unassigned


2010-01-11 15:59:00: @bennylp changed milestone from unassigned to Known-Issues

GCC with optimization causes different parsing result

2006-11-24 12:29:39: @bennylp created the issue on trac ticket 23

[Tested on mingw]

GCC 3.4.2 with optimization -O2 or higher produces different parsing result
when parsing an invalid SIP message. This causes pjsip-test to fail in
txdata_test(), when parsing a message. This test works fine when no
optimization is specified in GCC, or with Visual C 6 compiler.

Note that this does NOT seem to affect the ultimate result of the parsing (by
much). Valid messages will still be parsed okay, and invalid messages will
still ultimately be rejected. The difference is, the bug causes the whole
message to be rejected on syntax error, while the expected behavior is the
parser should continue parsing the remainder of the message even when there is
syntax error.

Below are screenshot of the test. Basically the test parses a SIP message
(which indeed has incorrect Via header on line 2), but it is expected that the

Screenshot:

 14:16:13.718 txdata_test. 435 bytes request created:--begin-msg--
INVITE sip:alice@wonderland:5061;x-param=param%201 SIP/2.0
Via: SIP/2.0/ ;rport
Max-Forwards: 70
From:
<sip:alice@wonderland;x-param=param%201>;tag=2807a3ef41ff452994558c9bdf9fcbab
To: <sip:alice@wonderland;x-param=param%201>
Contact:
<sip:alice@wonderland:5061;x-param=param%201?X-Hdr-1=Header%201&X-Empty-Hdr>
Call-ID: 7e7ca9661bdf42e2a54ed061e3c612a5
CSeq: 381 INVITE
X-Hdr-1: Header 1
X-Empty-Hdr: 
Content-Length:  0


--end-msg--
 14:16:13.718 txdata_test.    error: parsing message message
 14:16:13.718 txdata_test.      PJSIP syntax error in line 2 col 16 hname=
 14:16:13.718 tdta003D9158 Destroying txdata Request msg INVITE/cseq=381
(tdta003D9158)
 14:16:13.718       test.c ..ERROR(-255)

There is a compilation switch in PJSIP-TEST to test this bug. Enable with
#define INCLUDE_GCC_TEST 1 in test.h (default is 0).

Authentication loops forever when server keeps rejecting request with stale=true

2006-11-24 12:51:03: @bennylp created the issue on trac ticket 25

When a server keeps rejecting authorization with stale=true, PJSIP will keep retrying authrozation request, forever.

The solution perhaps is to limit the number of retries that the authentication client does before stop retrying.


2006-11-24 13:34:16: @bennylp edited the issue description


2006-12-29 00:14:19: @bennylp changed status from new to closed


2006-12-29 00:14:19: @bennylp set resolution to fixed


2006-12-29 00:14:19: @bennylp commented

Fixed in r871.

There is a new configuration setting PJSIP_MAX_STALE_COUNT to control how many retries to do before giving up when server keeps rejecting with stale=true (default is 3).

Bug in Replaces header parsing

2006-11-27 11:09:26: @bennylp created the issue on trac ticket 28

The Replaces header parsing doesn't allow '@' character in the Call-ID part of the header.


2006-11-27 11:11:42: @bennylp changed status from new to closed


2006-11-27 11:11:42: @bennylp set resolution to fixed

Move PJSIP compile time configurations/settings (such as T1, T2 timers) to run-time (thanks Philippe Leuba)

2006-11-24 11:55:50: @bennylp created the issue on trac ticket 7

Some PJSIP config (e.g. PJSIP_MAX_TSX_COUNT) may better be implemented as a run-time configs instead of compile time, to enable multiple applications to be built on a single PJSIP tree.


2008-02-21 14:37:49: @bennylp changed status from new to assigned


2008-02-21 14:37:49: @bennylp edited the issue description


2008-02-21 14:37:49: @bennylp changed title from Move PJSIP compile time config to run-time to Move PJSIP compile time configurations/settings (such as T1, T2 timers) to run-time


2008-02-21 14:37:49: @bennylp changed priority from minor to major


2008-02-21 14:37:49: @bennylp changed milestone from unassigned to release-0.9.0


2008-02-21 14:38:49: @bennylp uploaded file patch_pjsip_timers.txt (12.0 KiB)


2008-02-22 11:11:14: @bennylp changed status from assigned to closed


2008-02-22 11:11:14: @bennylp set resolution to fixed


2008-02-22 11:11:14: @bennylp changed title from Move PJSIP compile time configurations/settings (such as T1, T2 timers) to run-time to Move PJSIP compile time configurations/settings (such as T1, T2 timers) to run-time (thanks Philippe Leuba)


2008-02-22 11:11:14: @bennylp commented

Thanks Philippe Leuba for the patch

Patch applied in r1818 with minor modifications:

  • moved pjsip_cfg_t declaration to the top of sip_config.h.
  • added doxygen documentation for the new config API
  • Optimize pjsip_cfg() function call to inline for static library targets.
  • fixed warnings about unsigned/signed comparison mismatch
  • added new file in VS6, EVC4, and Symbian projects

2008-03-11 13:37:46: @bennylp commented

In r1857:

  • Fixed undefined symbol on Symbian

Complete Symbian Port

2006-11-24 12:34:10: @bennylp created the issue on trac ticket 24

Complete the Symbian port, up to PJSUA-LIB.


2006-11-24 12:34:55: @bennylp changed status from new to assigned


2007-01-21 23:29:44: @bennylp changed milestone from release-0.5.10 to release-0.5.11


2007-05-16 09:40:02: @bennylp changed status from assigned to closed


2007-05-16 09:40:02: @bennylp set resolution to fixed


2007-05-16 09:40:02: @bennylp commented

Done.


2007-05-18 20:29:51: @bennylp changed milestone from release-0.7.0-rc2 to ICE

Fix escaping rules in To/From tag and Via parameter

2006-11-24 11:58:17: @bennylp created the issue on trac ticket 8

Latest situation is, some UA sends % characters as part of header fields (e.g.
Via branch param, From/To tag param). Probably PJSIP is not supposed to
unescape these header fields, but it does, and it's causing the header field to
be escaped when sending the response.

Fortunately this is not happening with too much UA (only one that I'm aware of) so this bug is minor.


2010-01-11 15:58:34: @bennylp changed milestone from unassigned to Known-Issues

TLS support

2006-11-24 11:45:14: @bennylp created the issue on trac ticket 3

Implement TLS support for PJSIP


2006-12-08 21:59:02: @bennylp changed status from new to assigned


2006-12-08 21:59:02: @bennylp commented

Initial implementation in r849


2006-12-11 09:33:39: @bennylp commented

Some initial testing in r852


2006-12-24 04:36:30: @bennylp commented

More work in r858


2006-12-25 06:57:38: @bennylp changed status from assigned to closed


2006-12-25 06:57:38: @bennylp set resolution to worksforme


2006-12-25 06:57:38: @bennylp commented

Big rewrite in TLS implementation was done in r861:

  • The TLS transport implementation is now based on TCP transport, which works asynchronously.
  • Both client and server functionality works.
  • A rather complete TLS options, to customize the functionality and behavior.
  • Error code integration into main pjsip error space.
  • Integration to PJSUA-LIB and pjsua.
  • etc.

So we'll close this ticket for now.

Pending issues:

  • Currently SSL_connect() and SSL_accept() will block the calling thread indefinitely until SSL negotiation is complete.
  • The handling of SSL_write() that returns EWOULDBLOCK in the middle of packet transmission is currently untested.

2006-12-25 07:02:40: anonymous changed status from closed to reopened


2006-12-25 07:02:40: anonymous removed resolution (was worksforme)


2006-12-25 07:02:40: anonymous commented

Reopened for missing Makefile command for building TLS support.


2006-12-25 20:35:36: @bennylp changed status from reopened to closed


2006-12-25 20:35:36: @bennylp set resolution to worksforme


2006-12-25 20:35:36: @bennylp commented

Added Makefile/Autoconf support for TLS in r862.

Fix /dev/epoll backend for the ioqueue

2006-11-24 12:26:19: @bennylp created the issue on trac ticket 20

The /dev/epoll backend for the ioqueue has not been used for long time (last time was before PJ_IOQUEUE_SAFE_UNREGISTRATION is introduced). The /dev/epoll is quite important for large capacity applications, so it would be good if it is supported again.


2008-01-22 08:18:32: @bennylp changed milestone from unassigned to release-0.9.0


2008-05-29 09:09:33: @bennylp changed milestone from release-0.9.0 to Known-Issues

Support for asymmetric encoding/decoding ptime

2006-12-08 08:30:15: @bennylp created the issue on trac ticket 40

When remote has mode=20 and local has mode=30, local encounters error:

 08:27:23.648   strm00F496F4 Codec encode() error: Invalid PCM frame length 
(PJMEDIA_CODEC_EPCMFRMINLEN) [err:220085]

2006-12-08 08:30:30: @bennylp changed status from new to assigned


2006-12-08 08:30:30: @bennylp changed component from applications to pjmedia


2006-12-08 08:30:54: @bennylp edited the issue description


2006-12-08 08:31:34: @bennylp edited the issue description


2006-12-08 09:51:14: @bennylp changed priority from normal to major


2006-12-30 02:46:02: @bennylp changed title from Bug in iLBC mode negotiation to Support for asymmetric encoding/decoding ptime


2006-12-30 02:47:24: @bennylp changed status from assigned to closed


2006-12-30 02:47:24: @bennylp set resolution to fixed


2006-12-30 02:47:24: @bennylp commented

Implemented in r874.


2007-01-13 23:11:32: anonymous removed milestone (was release-0.5.10)


2007-01-13 23:11:32: anonymous commented

Really great site. Thanks a lot! 3pZkF1gqhx http://www.financial-day.com/d_c/ cheap domain names [url=http://hometown.aol.com/jjjinsurance/127.html] cheap car insurance [/url] virtual private server [url=http://www.ultimate-web-hosting.info/full_featured_hosting/vps/] virtual private server [/url]


2007-01-31 17:42:33: @bennylp set milestone to release-0.5.10

Explicit binding to specific listener/transport

2006-11-29 09:43:51: @bennylp created the issue on trac ticket 31

Some test applications want to simulate thousands of user agents (user endpoints) by creating lots of transports and bind the {dialog, registration, etc} to specific transport. Currently this is not possible since transport is managed automatically by pjsip.

The solution perhaps is to add optional local address/port specification in {dialog, registration, etc} and make the transport manager look up the transport not only by the remote address but also by the local listening point.


2006-12-26 03:58:25: @bennylp changed status from new to closed


2006-12-26 03:58:25: @bennylp set resolution to duplicate


2006-12-26 03:58:25: @bennylp commented

Closed because of duplicate with #50

GUI program crashes occasionally (invalid)

2006-12-11 09:08:52: @bennylp created the issue on trac ticket 41

Toni reported that a GUI program crashes occasionally after it's running for some time. Not sure what's causing this, could be application issue.


2006-12-25 20:40:54: @bennylp changed status from new to closed


2006-12-25 20:40:54: @bennylp set resolution to invalid


2006-12-25 20:40:54: @bennylp commented

No more report on this.


2007-01-10 22:37:07: @bennylp changed title from GUI program crashes occasionally to GUI program crashes occasionally (invalid)

Integrate table based G.711 encoding/decoding

2006-11-24 16:48:58: @bennylp created the issue on trac ticket 26

Integrate tables based G.711 encoding/decoding


2006-11-27 11:08:08: @bennylp changed milestone from release-0.5.9 to release-0.5.10


2006-11-30 01:35:41: @bennylp changed status from new to closed


2006-11-30 01:35:41: @bennylp set resolution to fixed


2006-11-30 01:35:41: @bennylp commented

Committed in r838. Thanks Toni Rutar for the original contribution.


2007-01-17 05:19:49: anonymous changed type from enhancement to task


2007-01-17 05:19:49: anonymous changed component from applications to pjlib

Check the samples_per_frame value of media stream

2006-11-28 13:50:22: @bennylp created the issue on trac ticket 30

Someone in the mailing list suggested that we shouldn't multiply frame with number of packets per frame to calculate samples_per_frame:
http://pjsip.org/pipermail/pjsip/2006-November/001196.html

Not clear how pjmedia does it now and why it does work.


2006-12-30 02:48:18: @bennylp changed status from new to closed


2006-12-30 02:48:18: @bennylp set resolution to invalid


2006-12-30 02:48:18: @bennylp commented

I don't think this is a valid bug.

Enhancement for PDA applications

2006-11-24 12:23:57: @bennylp created the issue on trac ticket 19

Some more features would be great for the PDA application (such as registration).


2007-01-21 23:30:53: @bennylp changed milestone from release-0.5.10 to release-0.5.11


2007-05-16 10:03:51: @bennylp changed status from new to closed


2007-05-16 10:03:51: @bennylp set resolution to fixed


2007-05-16 10:03:51: @bennylp changed milestone from release-0.7.0-rc2 to release-0.7.0-rc1

Packet length not set correctly when media transport fails with immediate error

2006-12-22 15:30:57: @bennylp created the issue on trac ticket 47

When ioqueue_recv() fails with immediate error in UDP transport, the bytes_read variable is not set properly, causing the stream to incorrectly try to parse the packet.

This causes some "invalid RTP version" error message to be printed. It may cause more serious error too, such as switching transport address to an invalid destination.


2006-12-22 15:31:53: @bennylp changed status from new to closed


2006-12-22 15:31:53: @bennylp set resolution to fixed


2006-12-22 15:31:53: @bennylp commented

Fixed on r857.

Bug in select() ioqueue: the recv() flag is not used

2006-12-25 06:35:46: @bennylp created the issue on trac ticket 49

When socket is signaled for readability, recv()/recvfrom is called with flags set to zero. It should use the flags as specified when ioqueue_recv()/ioqueue_recvfrom() was called.


2006-12-25 06:36:52: @bennylp changed status from new to closed


2006-12-25 06:36:52: @bennylp set resolution to fixed


2006-12-25 06:36:52: @bennylp commented

Fixed in r859.


2006-12-25 06:39:58: @bennylp commented

Also see r860.

Python binding for PJSUA-LIB

2006-11-24 12:05:46: @bennylp created the issue on trac ticket 12

As the title says..


2006-11-24 12:06:28: @bennylp changed status from new to assigned


2006-11-24 12:06:28: @bennylp commented

As of today we've finished the Base API.


2006-11-24 12:07:55: @bennylp changed type from enhancement to task


2007-01-13 23:10:39: anonymous removed milestone (was release-0.5.10)


2007-01-13 23:10:39: @ismangil


2015-04-09 04:10:11: @nanangizz changed status from assigned to closed


2015-04-09 04:10:11: @nanangizz set resolution to fixed


2015-04-09 04:10:11: @nanangizz commented

Python binding has been implemented few times, e.g: see ticket #809 and #1519.

Symbian sound device implementation

2006-11-24 11:44:24: @bennylp created the issue on trac ticket 2

Implement sound device implementation for Symbian/S60 3rd edition platform.


2007-01-10 19:49:03: @bennylp changed status from new to assigned


2007-01-10 19:49:03: @bennylp commented

Initial implementation in 878. Compiles and builds fine, but still get stucked on Open().


2007-01-21 23:30:31: @bennylp changed milestone from release-0.5.10 to release-0.5.11


2007-05-23 19:26:47: @bennylp changed milestone from release-0.7.0 to release-0.7.1


2007-06-22 12:41:48: @bennylp changed type from task to enhancement


2007-08-31 16:08:43: @bennylp commented

In r1428:

  • added symsndtest project/mmp for symbian audio testing
  • tested that callback works, but not in full-duplex. This is due to vendor restriction not allowing full-duplex unless with special developer license (or so).

2007-10-04 11:11:59: @bennylp changed status from assigned to closed


2007-10-04 11:11:59: @bennylp set resolution to fixed


2007-10-04 11:11:59: @bennylp commented

Someone had reported that the sound device works! Closing the ticket now.

Add socket handles to UDP media transport info

2006-11-30 19:44:42: @bennylp created the issue on trac ticket 33

Some application wants to do something with the sockets, so they need to be explosed.


2006-11-30 19:48:11: @bennylp changed status from new to closed


2006-11-30 19:48:11: @bennylp set resolution to invalid


2006-11-30 19:48:11: @bennylp commented

Turns out we already have one in pjmedia_sock_info!

Handle redirection (3xx) in PJSUA

2006-11-24 12:01:05: @bennylp created the issue on trac ticket 10

Handle redirect (3xx) response, according to SIP_Redirection page.


2008-01-22 08:19:51: @bennylp changed priority from minor to normal


2008-01-22 08:19:51: @bennylp changed milestone from unassigned to release-0.9.0


2008-02-17 11:13:39: @bennylp changed priority from normal to trivial


2008-06-06 23:55:28: @bennylp edited the issue description


2008-06-06 23:55:28: @bennylp changed title from Handle redirection (3xx) in PJSUA-API to Handle redirection (3xx) in PJSUA


2008-06-09 12:25:53: @bennylp changed milestone from release-0.9.0 to Known-Issues


2008-10-30 16:45:33: @bennylp changed milestone from Known-Issues to release-1.0.1


2008-11-27 00:07:22: @bennylp changed status from new to closed


2008-11-27 00:07:22: @bennylp set resolution to fixed


2008-11-27 00:07:22: @bennylp commented

Done in r2370


2008-11-27 12:42:38: @bennylp commented

In r2371: changed to signature of the redirection callbacks to make it more natural to use


2008-11-28 14:44:37: @bennylp edited the issue description

Add incoming URI string in pjsua_call_info

2006-12-07 20:55:16: @bennylp created the issue on trac ticket 39

It will be useful if application can inspect the incoming URI in the pjsua_call_info, since this URI now is only available in on_incoming_call() callback.


2006-12-11 09:34:52: @bennylp changed status from new to assigned


2006-12-11 09:34:52: @bennylp changed type from defect to enhancement


2006-12-15 11:46:00: @bennylp changed status from assigned to closed


2006-12-15 11:46:00: @bennylp set resolution to wontfix


2006-12-15 11:46:00: @bennylp commented

Changed my mind on this. The incoming URI is only meaningful on the first request that establishes the dialog (INVITE, normally), since for subsequent requests the incoming URI will be the URI that the session gave as its Contact.

For incoming call, application can inspect the incoming URI by looking at the rdata.

RTCP discard statistic should be increased when invalid RTP packet is received

2006-12-07 08:19:29: @bennylp created the issue on trac ticket 37

Some application uses the RTCP RX statistic to detect whether remote call has disappeared, i.e. when no packet is received for some time then application assumes that remote call has gone missing.

Some user agents (X-Lite in this case) send a one byte packet when the call is on-hold to keep the call running. So the receipt of such packet can be used to prevent application from deleting the call.

Unfortunately, this one byte packet will not count on any RX statistic since it was not an RTP packet, so it doesn't pass the rtp_decode() function.

The correct behavior (probably) is to count this invalid RTP packets as the discarded packets.


2006-12-07 08:21:55: @bennylp changed status from new to closed


2006-12-07 08:21:55: @bennylp set resolution to fixed


2006-12-07 08:21:55: @bennylp commented

Fixed in r846: invalid RTP packet is now counted in stat.rx.discard statistic.

Fix inconsistent convention on when to destroy tx_data

2006-11-24 12:19:12: @bennylp created the issue on trac ticket 17

The convention now is inconsistent about when tx_data reference counter should be decremented on failure. The dialog send() function always decrements the reference counter no matter what, while transaction only decrements it if it is sent successfully.

The good solution perhaps to always decrement reference counter no matter what, to prevent memory leaks, but need to consult everybody about this.

Implement audio preprocessor in PJMEDIA

2006-11-24 11:59:47: @bennylp created the issue on trac ticket 9

Implement audio preprocessor in PJMEIDA for AGC, noise reduction, etc. Speex has the implementation for these preprocessor, so one just need to create a media port for it.


2010-01-11 15:58:52: @bennylp changed milestone from unassigned to Known-Issues

Calling pjsua_create() after pjsua_destroy() fails

2006-11-28 08:13:16: @bennylp created the issue on trac ticket 29

Some application want to be able to call pjsua_create() after calling pjsua_destroy(). Currently this sequence fails because the error subsystem has already been registered and subsequent registration will be refused.

The solution perhaps is to clear the error subsystem once pj_shutdown() is called.


2006-11-28 10:50:53: @bennylp changed status from new to assigned


2006-11-28 10:50:53: @bennylp commented

Few things that should be cleared by pj_shutdown():

  • pj/errno.c should provide a function to clear all currently registered error handlers (e.g. pj_errno_clear_handlers(), which set err_msg_hnd_cnt to zero).
  • the exception_cleanup() function in pj/except.c should also clear exception_id_names array (if PJ_HAS_EXCEPTION_NAMES is defined, of course).

2006-11-28 10:52:18: @bennylp commented

Replying to [comment:1 bennylp]:

.. and pj_errno_clear_handlers() should be called by pj_shutdown(), of course.


2006-12-01 11:24:24: @bennylp changed status from assigned to closed


2006-12-01 11:24:24: @bennylp set resolution to fixed


2006-12-01 11:24:24: @bennylp commented

Fixed in r839

Accept, Allow, Supported, and generic string header should allow empty hvalue

2006-12-15 03:17:48: @bennylp created the issue on trac ticket 45

Parser should allow empty hvalue to be specified for these headers.


2006-12-15 03:18:00: @bennylp changed status from new to assigned


2006-12-15 03:18:00: @bennylp changed component from applications to pjsip


2006-12-15 11:34:05: @bennylp changed status from assigned to closed


2006-12-15 11:34:05: @bennylp set resolution to fixed


2006-12-15 11:34:05: @bennylp commented

Fixed in r854

Support for SIP UPDATE (RFC 3311) and fix the offer/answer negotiation

2006-11-24 11:51:33: @bennylp created the issue on trac ticket 5

SIP UPDATE is specified in RFC 3311 for updating session parameters without affecting dialog's state.

Also to be fixed in this development is the offer/answer negotiation in pjsip's invite session, since with the support for UPDATE (and PRACK) there are more offer and answer scenarios to support.


2007-10-03 19:24:55: @bennylp changed priority from minor to normal


2007-10-03 19:24:55: @bennylp changed milestone from unassigned to release-0.7.1


2007-10-03 19:24:55: @bennylp edited the issue description


2007-10-03 19:24:55: @bennylp changed title from Support for SIP UPDATE (RFC 3311) to Support for SIP UPDATE (RFC 3311) and fix the offer/answer negotiation


2007-10-03 19:31:57: @bennylp changed status from new to closed


2007-10-03 19:31:57: @bennylp set resolution to fixed


2007-10-03 19:31:57: @bennylp commented

Implemented in r1469:

  • UPDATE is now supported! Use pjsip_inv_update() to send UPDATE with offer.
  • PRACK implementation has been heavily modified since it is strictly coupled with the invite session's offer and answer session.
  • Because of above, PRACK support cannot be made optional anymore. The PJSIP_HAS_100REL configuration has been removed.
  • Fixed the offer/answer negotiation to support all scenarios (see below)
  • Added test module in test_pjsip application to test various offer/answer scenarios
  • Changed dialog to send Allow header in 1xx response, so that UAC can detect support for UPDATE
  • Minor fix in sip_transaction.c to make the pool's obj_name equal to the transaction's obj_name.

Supported offer and answer scenarios:

  • The usual INVITE with offer
  • INVITE with no offer will cause UAS to send offer in 18x or 2xx response. When 100rel is used, answer will be provided in PRACK, otherwise answer will be provided in ACK.
  • Sending and receiveing UPDATE containing new offer.

2007-10-04 07:39:45: @bennylp commented

Related to this, ticket #389 adds new commands in pjsua application to change codec orders and send UPDATE.

Unregistration unregisteres ALL Contacts

2006-12-02 07:21:21: @bennylp created the issue on trac ticket 35

Currently the unregistration function in PJSIP client registration (pjsip_regc_unregister()) sends REGISTER with Expires=0 for all contacts including those that are registered by other endpoints (because Contact header is set to "*"). This is not the correct behavior since it prevents more than one AOR to be registered.


2006-12-02 07:28:41: @bennylp changed status from new to closed


2006-12-02 07:28:41: @bennylp set resolution to invalid


2006-12-02 07:28:41: @bennylp commented

This is duplicate of ticket #36.

Add PJ_HAS_NO_SNPRINTF to other os_*.h

2006-11-24 12:27:35: @bennylp created the issue on trac ticket 21

The Symbian port adds PJ_HAS_NO_SNPRINTF capability to PJLIB. All other ports need to implement this.


2006-12-26 03:20:37: @bennylp changed status from new to closed


2006-12-26 03:20:37: @bennylp set resolution to wontfix


2006-12-26 03:20:37: @bennylp commented

We'll fix this later when we bring the Symbian branch to the trunk.

DTMF callback support in pjmedia/pjsua-API

2006-12-22 16:44:52: @bennylp created the issue on trac ticket 48

Currently there's no way to retrieve DTMF from pjsua API.


2006-12-26 00:14:06: @bennylp changed status from new to closed


2006-12-26 00:14:06: @bennylp set resolution to fixed


2006-12-26 00:14:06: @bennylp commented

Implemented in r863:

  • pjmedia_stream_set_dtmf_callback()
  • pjmedia_session_set_dtmf_callback()
  • on_dtmf_digit() callback in PJSUA-API

Send RTCP RR if stream is not transmitting RTP packets

2006-11-24 12:09:46: @bennylp created the issue on trac ticket 13

The RTCP framework should send RTCP RR when it's not transmitting anything.

Currently the transmission of RTCP was driven by transmission of RTP, so when an endpoint is only actively listening (and not sending anything, although stream direction is send-recv), then no RTCP packet is sent.


2007-09-20 12:27:21: @bennylp changed priority from minor to normal


2007-09-20 12:27:21: @bennylp changed milestone from unassigned to release-0.7.1


2007-09-20 12:28:46: @bennylp changed milestone from release-0.7.1 to release-0.6.0


2007-09-20 14:21:07: @bennylp changed status from new to closed


2007-09-20 14:21:07: @bennylp set resolution to fixed


2007-09-20 14:21:07: @bennylp changed title from Send RTCP RR correctly to Send RTCP RR if stream is not transmitting RTP packets


2007-09-20 14:21:07: @bennylp commented

Done in r1447.

The stream now will send RTCP SR or RR, depending on whether it has been transmitting RTP packets during the last interval. So even if the stream is sendrecv, it may transmit RR if it's not transmitting any RTP packets on the last interval. For recvonly
streams, only RR will be sent.

FYI, this ticket is duplicate of ticket #377.

NAT refresh packet

2006-11-24 11:53:56: @bennylp created the issue on trac ticket 6

When the application is behind firewall, maybe the stack needs to periodically send keep-alive packet (probably to STUN server) to keep the NAT binding open.


2009-01-12 13:50:30: @bennylp changed status from new to closed


2009-01-12 13:50:30: @bennylp set resolution to fixed


2009-01-12 13:50:30: @bennylp commented

This was done in the past few releases.

  • For both connection oriented transports (TCP/TLS) by the transport itself.
  • For UDP, by the client registration.

2010-01-11 15:58:16: @bennylp changed milestone from unassigned to Known-Issues

Don't change RTP/RTCP SSRC on re-INVITE

2006-11-24 12:11:30: @bennylp created the issue on trac ticket 14

Currently re-INVITE will cause a completely new media session to be created. Ideally some properties of the old session (such as SSRC) should be maintained throughout the duration of the call.


2006-11-24 12:11:43: @bennylp changed title from Don't change RTP/RTCP SSRC on re-invite to Don't change RTP/RTCP SSRC on re-INVITE


2007-11-21 14:50:47: @bennylp changed status from new to closed


2007-11-21 14:50:47: @bennylp set resolution to fixed


2007-11-21 14:50:47: @bennylp changed component from common to pjsua-lib


2007-11-21 14:50:47: @bennylp changed milestone from unassigned to release-0.8.1


2007-11-21 14:50:47: @bennylp commented

Done in r1591

Echo suppressor definition doesn't match the declaration

2006-12-12 14:38:03: @bennylp created the issue on trac ticket 43

the declaration of fun echo_supp_create in file
pjproject-0.5.9\pjmedia\src\pjmedia\echo_suppress.c
has only 6 parameters;
 
PJ_DECL(pj_status_t) echo_supp_create(pj_pool_t *pool,
          unsigned clock_rate,
          unsigned samples_per_frame,
          unsigned tail_ms,
          unsigned options,
          void **p_state );
 
 
However, there are 7 parameters in the declaration in file
pjproject-0.5.9\pjmedia\src\pjmedia\echo_common.c
 
PJ_DECL(pj_status_t) echo_supp_create(pj_pool_t *pool,
          unsigned clock_rate,
          unsigned samples_per_frame,
          unsigned tail_ms,
          unsigned latency_ms,            // not appear in echo_suppress.c
          unsigned options,
          void **p_state );
 
No error appear when compling and linking, but not run correctly;

2006-12-12 14:38:40: @bennylp changed status from new to assigned


2006-12-12 14:38:40: @bennylp edited the issue description


2006-12-15 11:57:56: @bennylp changed status from assigned to closed


2006-12-15 11:57:56: @bennylp set resolution to fixed


2006-12-15 11:57:56: @bennylp commented

Fixed in r855

Inaccurate error message when making call

2006-12-07 10:08:15: @bennylp created the issue on trac ticket 38

When the destination URI of pjsua_call_make_call() is not valid, an error is printed:

  09:46:56.216   pjsua_call.c Unable to generate Contact header: Invalid URI 
(PJSIP_EINVALIDURI) [status=171039]

This is misleading since the invalid URI is in the destination URI, not the Contact URI.


2006-12-07 10:09:34: @bennylp changed status from new to closed


2006-12-07 10:09:34: @bennylp set resolution to fixed


2006-12-07 10:09:34: @bennylp commented

Fixed in r847.

pjsip_regc_unregister SHOULD NOT unregister all Contacts

2006-12-02 07:23:41: @bennylp created the issue on trac ticket 36

Currently the unregistration function in PJSIP client registration (pjsip_regc_unregister()) sends REGISTER with Expires=0 for all contacts including those that are registered by other endpoints (because Contact header is set to "*"). This is not the correct behavior since it prevents more than one AOR to be registered.

The correct behavior should be for pjsip_regc_unregister() to unregister only contact(s) that was registered by this endpoint only.


2006-12-02 07:27:13: @bennylp changed status from new to closed


2006-12-02 07:27:13: @bennylp set resolution to fixed


2006-12-02 07:27:13: @bennylp commented

Fixed in r843:

  • pjsip_regc_unregister() only unregisters previously registered contact.
  • Added pjsip_regc_unregister_all() to register ALL contacts including those that are registered by other endpoints.

TCP/TLS transport bug when connection is closed

2006-12-11 09:29:55: @bennylp created the issue on trac ticket 42

When TCP connection is closed by remote, it will be marked as being shutdown so that it will not be used by subsequent requests. This is the correct behavior.

When application needs to send another message to the destination, the transport manager will see that there is a transport object for the destination, but this transport object is being shutdown, so the transport manager will create a new transport for the same destination. This is also the correct behavior.

But unfortunately the new transport created will have the same key as the transport being shutdown, so it will overwrite the entry in the hash table. Then the first transport is finally destroyed, it will set the hash table key to NULL, and this causes the second transport's entry to be inadvertly nullified.


2006-12-26 03:56:53: @bennylp changed status from new to closed


2006-12-26 03:56:53: @bennylp set resolution to fixed


2006-12-26 03:56:53: @bennylp commented

Fixed in r866.

Structured testing for PJSIP-UA

2006-11-24 12:21:49: @bennylp created the issue on trac ticket 18

We have structured testing up to transaction layer in PJSIP-TEST, but none is created for the higher layer. WE NEED TO HAVE THIS!

Some areas for the testing:

  • specifying/not specifying SDP in response.
  • forking test.
  • dialog failure scenarios
  • INVITE session failure scenarios
  • SIMPLE test
  • etc.

2006-11-24 12:22:15: @bennylp edited the issue description

Unable to send registration in the callback

2006-12-01 20:28:58: @bennylp created the issue on trac ticket 34

The client registration temporarily increases the pending_tsx flag before calling the callback. This is intended to prevent application from deleting the registration while it's in the callback. Unfortunately this also prevents application from sending another REGISTER request before the pending_tsx flag is not zero.

The solution for this is to separate the has_pending_tsx flag with the flag to prevent deletion.


2006-12-01 20:50:15: @bennylp changed status from new to closed


2006-12-01 20:50:15: @bennylp set resolution to fixed


2006-12-01 20:50:15: @bennylp commented

Fixed in r841

Bug/crash in pjmedia_enum_snd_devs (invalid)

2006-12-14 17:00:03: @bennylp created the issue on trac ticket 44

Somebody reported crash in pjmedia_enum_snd_devs().


2006-12-15 11:05:59: @bennylp changed status from new to closed


2006-12-15 11:05:59: @bennylp set resolution to invalid


2006-12-15 11:05:59: @bennylp commented

Invalid bug, the function works fine.


2007-01-10 22:37:32: @bennylp changed title from Bug/crash in pjmedia_enum_snd_devs() to Bug/crash in pjmedia_enum_snd_devs (invalid)

Bug in message framing detection

2006-11-24 11:47:15: @bennylp created the issue on trac ticket 4

For TCP, if the remainder of a message contains garbage, it will cause the next valid message to be discarded. For example, consider the following:

INVITE sip:[email protected] SIP/2.0
To: sip:[email protected]
From: sip:[email protected]
Call-ID: [email protected]
CSeq: 8 INVITE
Via: SIP/2.0/TCP 135.180.130.133
Content-Type: application/sdp
Content-Length: 138

v=0
o=mhandley 29739 7272939 IN IP4 126.5.4.3
c=IN IP4 135.180.130.88
m=audio 49210 RTP/AVP 0 12
m=video 3227 RTP/AVP 31
a=rtpmap:31 LPC/8000
asdpasd08asdsdk:;;asd
 a0sdjhg8a0*...*;;;;

With current parsing, the garbage will be prepended to the next message, and it will cause the parsing of the next message to fail.


2006-11-24 11:48:22: @bennylp edited the issue description


2010-01-11 15:58:05: @bennylp changed milestone from unassigned to Known-Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.