IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#i2p-dev
/2023/08/01
eyedeekay obscuratus I've been looking at that error too and if we get robin back we should ask if that error is close to the top of the log
eyedeekay I don't think it happens every time either but I don't know why yet
obscuratus I've never run across it before.
obscuratus In as much as 2.3.0 has been out a while, and this throws a big, ugly error, I think this is some kind of corner case.
eyedeekay Yeah I think I've seen it but I think it's 1/X number of restarts kind of thing, like there's a race to initialize something somewhere
eyedeekay I have another hunch about that but it's going to take a few hours to test
eyedeekay I have to amass a tremendous number of peers
robin The SAM documentation does not explicitly say what the purpose is of the HOST= parameter on a SESSION ADD request. Am I correct that it is the ip address on which the port specified by PORT= is located? And if it is not specified, what is the default?
robin Or should I be using the sam.udp.host and sam.udp.port parameters instead?
T3s|4 robin: in case you missed it, both eyedeekay and obscuratus wanted to follow-up with you earlier. Please explicitly highlight them when posing i2p development queries :)
eyedeekay robin you can either use the default port, or set the port on the session line to configure the SAMv3 session, whichever you choose is where you should send the datagrams. Same for host. 99.99% of the time I just use the default
robin eyedeekay In my case my Python program is NOT running on the same machine as the I2P router. Will HOST default to where the master TCP session is originating?
eyedeekay Yes I am fairly sure it will, you probably need to set the host
robin ok. What is the difference between the HOST and sam.udp.host parameters?
robin Hmm, maybe those sam.udp parameters refer to where SAM is running?
robin It is just that my program never gets ANY UDP messages back from the router
dr|z3d how's your c++ robin?
robin I used to work in C++ a lot, so probably still ok
robin I am trying to find the SAM src code now...
dr|z3d ok, great. if you have a look at the i2pchat source, it might give you some hints.
dr|z3d (it's a functional messenger app that uses sam)
robin Where would I find that?
robin Thanks, I will look at that
robin Interesting. i2pchat has 10x the lines of code that my Python program does. :)
dr|z3d wouldn't surprise me, not least because qt apps aren't exactly compact :)
robin i2pchat is using STREAM connection - I am using DATAGRAMS.
robin My progam is in getting DATAGRAMS to work.
robin I have other STREAM code that works fine
dr|z3d ok, was worth a shot. I thought you might be having issues establishing a session.
dr|z3d in any event the udp HOST is the router :)
robin I get the PRIMARY session established ok. And the sub-session gets added ok. But when I actually go to send messages, they dissapear into the ether and do not come out the other end.
robin I think I am getting something wrong about the host/port combinations
robin The SAM documetation on the SESSION ADD command is lacking in details
dr|z3d could be that. are you using java i2p as the host?
robin yes, Java. Latest update
dr|z3d ok, and presumably you've got the sam logging at debug level?
robin For example, the doc says that PORT= is "Required for Datagram and Raw, invalid for Stream". But it does not actually say what this is used for!
robin It does talk about LISTEN_PORT
robin Mybe I should be using LISTEN_PORT instead
dr|z3d I'd assume PORT is for the host, LISTEN_PORT is for the client.
robin But PORT= is required!!
robin O, so I should say PORT=7654?
robin And LISTEN_PORT= whatever UDP port I just opened?
dr|z3d it smells like the host doesn't know where to send packets.
dr|z3d so, handshake seems like where the issue's at.
robin I agree with that
robin It might also be that my client is sending the messages to the wrong place too.
dr|z3d that will indicate which ports you want to use. 7656 appears to be the default for udp.
robin Ahh, I ofund under sending datagrams, they should go to router port 7655
dr|z3d not sure what ofunding entails, but maybe :)
robin *I found
robin I am looking for hot to receive datagrams in V3.
dr|z3d I think we're all looking for hot. Let us know when you find her. *wink*
robin Argh. HOW to receive in V3. I see how v1 and v2 do it
dr|z3d This is where my insights run dry. eyedeekay is the expert.
robin That page mentions the SAM TCP ports but nothing about UDP
eyedeekay I am going to have to have a closer look, I will figure it out from one of the other sam libs
eyedeekay sam3 in go is the only other one with 3.3 support
dr|z3d there are two ports mentioned, only one is explicitly tcp, so _maybe_ the one that isn't is udp. just a guess.
robin It seems clear I should be SENDING datagrams to port 7655.
robin 7655 is mentioned several times in the doc
robin So then if I just set LISTEN_PORT for my end, that will complete the handshake. I will try that
obscuratus robin: If you come across that error you mentioned yesterday again, let me know if you can pass on a method for replicating it, and I'll look into it.
robin obscuratus ok, but it has not reappeared yet
robin wireshark shows my UDP message being rejected for "port unreachable". RUnning netstat on the router node shows port 7655 is bound to 126.0.0.1. How do I change that to be receptive to connections from my LAN?
robin Sorry, 127.0.0.
robin 127.0.0.1
robin Something in the clients.config.d file for SAM should be able to make it listen for more than local connects
RN change 127.0.0.1 to 0.0.0.0
RN but beware
RN anyone that gets into your lan can then access it
robin I know about that. But WHERE do I make this change?
RN and make sure it is blocked from outernet by firewall
RN oh
robin It is. Two stacked firewalls in fact
robin Make that THREE firewalls
RN ok, so... it is on one of the console /config* pages
RN using SAM?
RN /configclients
robin Yes. The console page says to edit the files in clients.config.d.
RN java-i2p or i2pd?
robin But the file for SAM does not show the setting for UDP - it is taking a default. So I do not know what to edit
robin java
RN in the console, stop sam, then edit save and start
RN I think this: net.i2p.sam.SAMBridge sam.keys 0.0.0.0 7656 i2cp.tcp.host=0.0.0.0 i2cp.tcp.port=7654
robin Edit WHAT?
robin I know which file, but I do not know what to put in there
robin I see that line, but I do not know what to add.
RN when you stop the client it adds an edit button
RN do it in the console
RN wait, your line has 0.0.0.0 in both those places?
robin Both WHICH places?
robin I stopped SAM, but no edit button appeared
RN I was expecting you to have 127.0.0.1 for both of those
robin It says "net.i2p.sam.SAMBridge sam.keys 192.168.2.128 7656 i2cp.tcp.host=127.0.0.1 i2cp.tcp.port=7654"
robin It mentions TCP but not UDP
RN the edit button should appear
RN maybe you need the config advanced = true
RN also, editing some config files while router is running doesn't work, others will pick up the changes automatically
RN always best to work from console instead of config file where possible
robin It says, edit router.config, enabl ADVANCE, then restart. That one?
RN not sure, but I think the changes are for tcp and udp... bit out of my depth
RN yeah, if you havent already done that...
RN heed the caution though
RN you can really break stuff if you just start changing settings without researching them first
RN once you reboot, the configadvanced box should be editable
robin I have often thought it would be nice, at install time, to have a choice, "COnnections local to router node only? yes/no" And then all the defaults change, without having to edit files
RN neat proposal
RN you should mention it on ramble or git
robin I got that idea from something Sadie said on Mastodon, about making things simpler for non-techie users
robin See, my router node, a small NUC, stays up all the time, so it can help out the network. My apps access from my big desktop machine, which is NOT running all the time
robin restarting
robin Well, I enabled advanced config editing, but all that does is give me a text box containing that one line from the SAM config file. So I am right back where I started: what is the name of the symbol I have to set to make SAM listen on 0.0.0.0?
RN go back on the clientsconfig and stop the client, see if the edit button appears
RN if it does, you can change both IP to 0.0.0.0
RN if it does not, I'm not sure what to try next
robin I stopped SAM Bridge. Edit button appeared. Clciking that shows me the text box I described. It has some TCP settings in it
robin I will have to look at the SAM source code...
RN so you are running it on a nuc, I have a couple of those I hadn't decided what to do with
robin The router is on a NUC, yes. That also runs pi-hole and is my local caching DNS server
RN nice, I've got those functions on a tower right now running fbsd...
robin It is wired directly to the LAN router and can see the full fiber bandwidth, though I don't let I2P use all of that
RN sounds like a good setup
RN myself I'd just try changing both IP on that text box to 0.0.0.0, but let us know what you find in the sam source
robin I throttle I2p to fit into a popular speed range among all routers so I am hidden among a larger crowd
RN I know it doesn't mention udp, but I'm presuming the same IP config applies to both
robin I have edited an IP address there, which seems to only affect the TCP cpnnections. I can make the Primary Session connection just fine, and that uses TCP.
RN ok, at this point I am out of my depth, hopefully someone more experienced speaks up
RN at least you don't have to change it in the config file now, you may be able to append things on that line for udp perhaps... but probably need to find some details in doc or source
robin The SAM doc (all 15 pages of it) does not mention any of this
RN yeah, I think the TCP part is much more fleshed out than UDP. but don't have anything else to try at this point.
robin src code says the magic keywords are sam.udp.host and sam.udp.port
robin Awaiting restart
eyedeekay Sorry I was away from my desk for a while, yes those are the configs
dr|z3d 0.0.0.0 shouldn't be necessary in most cases, and inadvisable when the router in question is exposed.
dr|z3d in most cases you just want a lan ip, RN.