# US 12,113,776 B1 · Data access and firewall tunneling using a custom socket factory

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,113,776 B1
- Document ID: US12113776B1
- Status: Granted
- Kind: B1
- Application number: 18/333,242
- Filed: 2023-06-12
- Granted: 2024-10-08
- Earliest claimed: 2017-11-30
- Assignees: Progress Software Corporation
- Applicants: Progress Software Corporation
- Inventors: John Alan Hensley
- Web page: https://patentgrep.com/patent/US12113776B1

## CPC

- H04L 63/029: {Firewall traversal, e.g. tunnelling or, creating pinholes}
- H04L 61/2553: Binding renewal aspects, e.g. using keep-alive messages
- H04L 61/2592: using tunnelling or encapsulation
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 43/10: Active monitoring, e.g. heartbeat, ping or trace-route
- H04L 61/2514: between local and global IP addresses
- H04L 61/256: NAT traversal
- H04L 67/55: Push-based network services
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method of tunneling through a network separation device such as a firewall or a Network Address Translator comprising establishing via a custom socket factory coupled with a host device, a connection with a cloud server by tunneling through a network separation device; maintaining, via the custom socket factory, the connection with the cloud server through the network separation device; receiving, via the connection between the custom socket factory and the cloud server, connection information; and directly connecting, via the custom socket factory, to a client device using the connection information received from the cloud server.

## Claims

### Claim 1

A method comprising:
establishing, by a host device coupled to a custom socket factory, a first connection between the custom socket factory and an intermediary through a network separation device, the intermediary on a first side of the network separation device and the host device on a second side of the network separation device;
receiving, by the custom socket factory via the first connection, connection information of a client device from the intermediary; and
establishing, by the custom socket factory, a second connection between the custom socket factory and the client device via a network and through the network separation device using the connection information of the client device.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the host device is behind the network separation device;
the intermediary and the client device are outside of the network separation device; and
the network separation device is one of a firewall and a network address translator.

### Claim 3 (depends on 1)

The method of claim 1, wherein the custom socket factory establishes the second connection between the custom socket factory to the client device by:
opening a new socket connection to the client device using the connection information of the client device; and
returning the new socket connection to the host device that is responsible for responding to a client request from the client device.

### Claim 4 (depends on 1)

The method of claim 1, wherein:
the custom socket factory lacks a listener port; and
the custom socket factory appears as a default socket factory of the host device.

### Claim 5 (depends on 1)

The method of claim 1, wherein the custom socket factory maintains the first connection between the custom socket factory and the intermediary by:
determining that a connection to the host device is not requested during a timeout period associated with the first connection between the custom socket factory and the intermediary;
re-establishing the first connection between the custom socket factory and the intermediary; and
resetting the timeout period.

### Claim 6 (depends on 1)

The method of claim 1, wherein the custom socket factory maintains the first connection between the custom socket factory and the intermediary by:
performing a long poll action with the intermediary, the long poll action associated with a long poll timeout;
determining that a long poll timeout occurs; and
starting another long poll action with the intermediary without a socket disconnection.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving, at the custom socket factory via the first connection, a signal indicating that a connection to the host device is requested responsive to the intermediary receiving credential information of the client device and a host identifier of the host device responsive to the intermediary determining that the client device is permitted to connect to the host device based on the credential information of the client device and the host identifier of the host device.

### Claim 8 (depends on 1)

The method of claim 1, wherein receiving the connection information of the client device is responsive to a long poll action or a push action performed by the custom socket factory.

### Claim 9 (depends on 1)

The method of claim 1, wherein the connection information of the client device includes one or more of socket information, address information, a port number, and routing information associated with the client device.

### Claim 10 (depends on 1)

The method of claim 1, wherein:
the connection information of the client device is obtained by and stored at the intermediary; and
receiving the connection information of the client device includes retrieving the connection information of the client device from the intermediary.

### Claim 11

A host device comprising:
one or more processors; and
a memory storing instructions that, when executed by the one or more processors, cause the host device to:
establishing a first connection between a custom socket factory and an intermediary through a network separation device, the intermediary on a first side of the network separation device and the host device on a second side of the network separation device;
receiving, by the custom socket factory via the first connection, connection information of a client device from the intermediary; and
establishing, by the custom socket factory, a second connection between the custom socket factory and the client device via a network and through the network separation device using the connection information of the client device.

### Claim 12 (depends on 11)

The host device of claim 11, wherein:
the host device is behind the network separation device;
the intermediary and the client device are outside of the network separation device; and
the network separation device is one of a firewall and a network address translator.

### Claim 13 (depends on 11)

The host device of claim 11, wherein the custom socket factory establishes the second connection between the custom socket factory and the client device by:
opening a new socket connection to the client device using the connection information of the client device; and
returning the new socket connection to the host device that is responsible for responding to a client request from the client device.

### Claim 14 (depends on 11)

The host device of claim 11, wherein:
the custom socket factory lacks a listener port; and
the custom socket factory appears as a default socket factory of the host device.

### Claim 15 (depends on 11)

The host device of claim 11, wherein the custom socket factory maintains the first connection between the custom socket factory and the intermediary by:
determining that a connection to the host device is not requested during a timeout period associated with the first connection between the custom socket factory and the intermediary;
re-establishing the first connection between the custom socket factory and the intermediary; and
resetting the timeout period.

### Claim 16 (depends on 11)

The host device of claim 11, wherein the custom socket factory maintains the first connection between the custom socket factory and the intermediary by:
performing a long poll action with the intermediary, the long poll action associated with a long poll timeout;
determining that a long poll timeout occurs; and
starting another long poll action with the intermediary without a socket disconnection.

### Claim 17 (depends on 11)

The host device of claim 11, wherein the instructions, when executed by the one or more processors cause the one or more processors to:
receive, at the custom socket factory via the first connection, a signal indicating that a connection to the host device is requested responsive to the intermediary receiving credential information of the client device and a host identifier of the host device responsive to the intermediary determining that the client device is permitted to connect to the host device based on the credential information of the client device and the host identifier of the host device.

### Claim 18 (depends on 11)

The host device of claim 11, wherein receiving the connection information of the client device from the intermediary is responsive to a long poll action or a push action performed by the custom socket factory.

### Claim 19 (depends on 11)

The host device of claim 11, wherein the connection information includes one or more of socket information, address information, a port number, and routing information associated with the client device.

### Claim 20 (depends on 11)

The host device of claim 11, wherein:
the connection information of the client device is obtained and stored at the intermediary; and
receiving the connection information of the client device includes retrieving the connection information of the client device from the intermediary.
