Hi Shikha, What you can/should do is call socket(), bind() and listen() yourself first, and then call MHD_start_daemon() using MHD_OPTION_LISTEN_SOCKET to pass the already bound listen socket.
That way, you can precisely bind to whatever IPs/ports you want to use. happy hacking! Christian On 3/25/20 4:32 PM, Shikha Sharma wrote: > Hi, > > I was trying to test some scenarios to see what is allowed and what is > not allowed by MHD in respect to starting 2 servers on same port but > different IP address. > > The information for passing on the address to MHD_start_daemon api is: > addr_hint.ai_family = AF_UNSPEC; /* IPv4 or IPv6 */ > addr_hint.ai_flags = AI_ADDRCONFIG; > addr_hint.ai_socktype = SOCK_STREAM; > > For IPv6 addresses, Daemon is started by calling api > MHD_start_daemon(flags, port, MHD_OPTION_SOCK_ADDR, address..) where > MHD_USE_IPv6 is set in flags. > > For IPv4, is started same way but without MHD_USE_IPv6. > > Below are some of the scenarios that I have tried: > > Scenario 1: > > * Start S1 on : '0.0.0.0':6666 > * Start S2 on: :'fe80::5054:ff:feec:73d1':6666 > > The MHD_start_daemon api is okay for S1 but fails for S2. > > Scenario2: > > * Start S1 on : '0.0.0.0':6666 > * Start S2 on: '::':6666 > > MHD_start_daemon call is successful on both. > > Scenario3: > > * Start S1 on : '192.168.11.11':6666 > * Start S2 on: '::':6666 > > MHD_start_daemon call is successful on both. > > Scenario4: > > * Start S1 on : '192.168.11.11':6666 > * Start S2 on: 'fe80::5054:ff:feec:73d1':6666 > > MHD_start_daemon call fails on S2. > > Both IP addressed are on same interface.Is this how they are supposed to > work? Why is it that it fails in scenario 1 but is okay in scenario 3? > > Trying to figure-out if its an issue at my end/expected behavior/issue > in MHD? > > Thanks & Regards, > > Shikha >
signature.asc
Description: OpenPGP digital signature