LPRng-HOWTO: 17 Jan 2003 (For LPRng-3.8.20)
Prev | Chapter 20. The Most Frequently Asked Questions | Next

# 20.2. It was working normally, then I get connection refused errors

This message usually appears when you have been sending a large number of jobs to a network printer or a remote system. The reason for this is a combination the above port 721-731 restriction and the TCP/IP timeouts. For details, see RFC1179 and LPRng, but here is a quick explanation.

A TCP/IP connection is usually specified as between `srchost:srcport, desthost:destport`, although in practice the order of source (src) and destination (dest) is not important.

When a connection is established, each end of the connection exchanges the necessary flow control and error control information. When a connection is terminated, each end of the connection will not accept another connection from the same `host:port` that was previously active for a specified timeout period, usually 10 minutes.

Some TCP/IP implementations go further: they will not allow ANY connection to be originated (via the `bind()` system call or API) from a port that was active, or accepted on a port that was active for this timeout period.

Now let us see what happens when we have a client program, which must originate a connection on port 721-731, connect to the server, which waits for a connection on port 515. We first try to make a connection from host:port `1.1.1.1:721` to `1.1.1.2:515`. The first time that we make the connection (or the first connection) we succeed. We can transfer a file, etc., and then close the connection. When we try to reconnect from `1.1.1.1:721` to `1.1.1.2:515` we get an error such as "address already in use" or "connection refused".

Luckily, we can use port 722 to originate a connection, and we can connect from `1.1.1.1:722` to `1.1.1.2:515`. We continue on, until we come to port 731, and then we need to wait for our timeouts.

SOLUTION:

It appears that most RFC1179 implementations do not check for the exact port range 721-731, but only that the connection originates from a reserved port, i.e. - in the range 1-1023. You can extend the range of ports used by LPRng by changing the

        originate_port=721 731

value in the defaults (`LPRng/src/common/defaults.c`) file or in the `lpd.conf` file. I recommend the following:

        originate_port=512 1022

This is, in fact, now the default in LPRng software. If you get the infamous `malformed from address` error message from your spooler, then you will have to set originate_port=721 731, and live with a delayed throughput.

Prev | Home | Next
The Most Frequently Asked Questions | Up | Job is not in print queue, but it gets printed!