The ephemeral ports you mention are used ONLY if  you do not do BIND call on socket for outgoing connection.
If before doing CONNECT you do BIND,  the local port number will be one specified in BIND.
Following small program demonstrates it.

#!/usr/bin/python
import socket
import threading


READER_ADDR = ("127.0.0.1", 23008)
WRITER1_ADDR = ("127.0.0.1", 23001)
WRITER2_ADDR = ("127.0.0.1", 23002)


LISTEN_SOCK = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
LISTEN_SOCK.bind(READER_ADDR)
LISTEN_SOCK.listen(3)

DONE = False

class wait_conn(threading.Thread):
    def run(self):
        while not DONE:
            s, a = LISTEN_SOCK.accept()
            print("Incomming connection from: ",  s.getpeername())
            s.close()


t = wait_conn()
t.start()

w1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
w1.bind(WRITER1_ADDR)
w1.connect(READER_ADDR)
w1.close()



w2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
w2.bind(WRITER2_ADDR)
w2.connect(READER_ADDR)
w2.close()

DONE = True

t.join(1.0)
LISTEN_SOCK.close()

 


2018-06-20 15:19 GMT+02:00 Daniel-Constantin Mierla <notifications@github.com>:

By default, Kamailio is reusing the tcp connection when possible.

Again, about the local port for tcp connections, read more about tcp protocol and how a connection is identified (some references about ephemeral ports are also there) -- practically it is the tcp stack implementation/operating system kernel that does the selection of the local port, impossible to ensure it from user space.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.


_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev