We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Does the framework support IPv6 networks?
Is this framework suitable for IPv6 network environment? 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `src/syft/grid/example_nodes/network.py`
Content:
```
1 """
2 The purpose of this application is to allow us to dev and test PySyft
3 functionality on an actual local network. This is NOT meant to be run in
4 production (that's the *actual* grid's job).
5 
6 For example:
7 $ python src/syft/grid/example_nodes/network.py
8 
9 """
10 # stdlib
11 import os
12 
13 # third party
14 import flask
15 from flask import Flask
16 from flask import Response
17 from nacl.encoding import HexEncoder
18 
19 # syft absolute
20 from syft.core.common.message import SignedImmediateSyftMessageWithReply
21 from syft.core.common.message import SignedImmediateSyftMessageWithoutReply
22 from syft.core.common.serde.deserialize import _deserialize
23 from syft.core.node.network.network import Network
24 from syft.grid.services.signaling_service import PullSignalingService
25 from syft.grid.services.signaling_service import PushSignalingService
26 from syft.grid.services.signaling_service import RegisterDuetPeerService
27 
28 app = Flask(__name__)
29 
30 network = Network(name="om-net")
31 
32 network.immediate_services_without_reply.append(PushSignalingService)
33 network.immediate_services_with_reply.append(PullSignalingService)
34 network.immediate_services_with_reply.append(RegisterDuetPeerService)
35 network._register_services()  # re-register all services including SignalingService
36 
37 
38 @app.route("/metadata")
39 def get_metadata() -> flask.Response:
40     metadata = network.get_metadata_for_client()
41     metadata_proto = metadata.serialize()
42     r = Response(
43         response=metadata_proto.SerializeToString(),
44         status=200,
45     )
46     r.headers["Content-Type"] = "application/octet-stream"
47     return r
48 
49 
50 @app.route("/", methods=["POST"])
51 def process_network_msgs() -> flask.Response:
52     data = flask.request.get_data()
53     obj_msg = _deserialize(blob=data, from_bytes=True)
54     if isinstance(obj_msg, SignedImmediateSyftMessageWithReply):
55         print(
56             f"Signaling server SignedImmediateSyftMessageWithReply: {obj_msg.message} watch"
57         )
58         reply = network.recv_immediate_msg_with_reply(msg=obj_msg)
59         r = Response(response=reply.serialize(to_bytes=True), status=200)
60         r.headers["Content-Type"] = "application/octet-stream"
61         return r
62     elif isinstance(obj_msg, SignedImmediateSyftMessageWithoutReply):
63         print(
64             f"Signaling server SignedImmediateSyftMessageWithoutReply: {obj_msg.message} watch"
65         )
66         network.recv_immediate_msg_without_reply(msg=obj_msg)
67         r = Response(status=200)
68         return r
69     else:
70         print(
71             f"Signaling server SignedImmediateSyftMessageWithoutReply: {obj_msg.message} watch"
72         )
73         network.recv_eventual_msg_without_reply(msg=obj_msg)
74         r = Response(status=200)
75         return r
76 
77 
78 def run() -> None:
79     global network
80     print("====================================")
81     print("========== NODE ROOT KEY ===========")
82     print("====================================")
83     # this signing_key is to aid in local development and is not used in the real
84     # PyGrid implementation
85     PORT = os.getenv("PORT", 5000)
86     print(f"Starting Node on PORT: {PORT}")
87     print(network.signing_key.encode(encoder=HexEncoder).decode("utf-8"), "\n")
88     app.run(host="0.0.0.0", port=int(PORT))  # nosec
89 
90 
91 run()
92
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/src/syft/grid/example_nodes/network.py b/src/syft/grid/example_nodes/network.py
--- a/src/syft/grid/example_nodes/network.py
+++ b/src/syft/grid/example_nodes/network.py
@@ -9,6 +9,7 @@
 """
 # stdlib
 import os
+import sys
 
 # third party
 import flask
@@ -77,15 +78,25 @@
 
 def run() -> None:
     global network
-    print("====================================")
-    print("========== NODE ROOT KEY ===========")
-    print("====================================")
+
+    IP_MODE = os.getenv("IP_MODE", "IPV4")  # default to ipv4
+    if len(sys.argv) > 1:
+        IP_MODE = sys.argv[1]
+
+    IP_MODE = "IPV6" if IP_MODE == "IPV6" else "IPV4"
     # this signing_key is to aid in local development and is not used in the real
     # PyGrid implementation
+    HOST = "0.0.0.0" if IP_MODE == "IPV4" else "::"  # nosec
     PORT = os.getenv("PORT", 5000)
-    print(f"Starting Node on PORT: {PORT}")
+
+    print("====================================")
+    print("========== NODE ROOT KEY ===========")
+    print("====================================")
     print(network.signing_key.encode(encoder=HexEncoder).decode("utf-8"), "\n")
-    app.run(host="0.0.0.0", port=int(PORT))  # nosec
+
+    print(f"Using {IP_MODE} and listening on port {PORT}")
+
+    app.run(host=HOST, port=int(PORT))
 
 
 run()

{"golden_diff": "diff --git a/src/syft/grid/example_nodes/network.py b/src/syft/grid/example_nodes/network.py\n--- a/src/syft/grid/example_nodes/network.py\n+++ b/src/syft/grid/example_nodes/network.py\n@@ -9,6 +9,7 @@\n \"\"\"\n # stdlib\n import os\n+import sys\n \n # third party\n import flask\n@@ -77,15 +78,25 @@\n \n def run() -> None:\n     global network\n-    print(\"====================================\")\n-    print(\"========== NODE ROOT KEY ===========\")\n-    print(\"====================================\")\n+\n+    IP_MODE = os.getenv(\"IP_MODE\", \"IPV4\")  # default to ipv4\n+    if len(sys.argv) > 1:\n+        IP_MODE = sys.argv[1]\n+\n+    IP_MODE = \"IPV6\" if IP_MODE == \"IPV6\" else \"IPV4\"\n     # this signing_key is to aid in local development and is not used in the real\n     # PyGrid implementation\n+    HOST = \"0.0.0.0\" if IP_MODE == \"IPV4\" else \"::\"  # nosec\n     PORT = os.getenv(\"PORT\", 5000)\n-    print(f\"Starting Node on PORT: {PORT}\")\n+\n+    print(\"====================================\")\n+    print(\"========== NODE ROOT KEY ===========\")\n+    print(\"====================================\")\n     print(network.signing_key.encode(encoder=HexEncoder).decode(\"utf-8\"), \"\\n\")\n-    app.run(host=\"0.0.0.0\", port=int(PORT))  # nosec\n+\n+    print(f\"Using {IP_MODE} and listening on port {PORT}\")\n+\n+    app.run(host=HOST, port=int(PORT))\n \n \n run()\n", "issue": "Does the framework support IPv6 networks?\nIs this framework suitable for IPv6 network environment? \n", "before_files": [{"content": "\"\"\"\nThe purpose of this application is to allow us to dev and test PySyft\nfunctionality on an actual local network. This is NOT meant to be run in\nproduction (that's the *actual* grid's job).\n\nFor example:\n$ python src/syft/grid/example_nodes/network.py\n\n\"\"\"\n# stdlib\nimport os\n\n# third party\nimport flask\nfrom flask import Flask\nfrom flask import Response\nfrom nacl.encoding import HexEncoder\n\n# syft absolute\nfrom syft.core.common.message import SignedImmediateSyftMessageWithReply\nfrom syft.core.common.message import SignedImmediateSyftMessageWithoutReply\nfrom syft.core.common.serde.deserialize import _deserialize\nfrom syft.core.node.network.network import Network\nfrom syft.grid.services.signaling_service import PullSignalingService\nfrom syft.grid.services.signaling_service import PushSignalingService\nfrom syft.grid.services.signaling_service import RegisterDuetPeerService\n\napp = Flask(__name__)\n\nnetwork = Network(name=\"om-net\")\n\nnetwork.immediate_services_without_reply.append(PushSignalingService)\nnetwork.immediate_services_with_reply.append(PullSignalingService)\nnetwork.immediate_services_with_reply.append(RegisterDuetPeerService)\nnetwork._register_services()  # re-register all services including SignalingService\n\n\n@app.route(\"/metadata\")\ndef get_metadata() -> flask.Response:\n    metadata = network.get_metadata_for_client()\n    metadata_proto = metadata.serialize()\n    r = Response(\n        response=metadata_proto.SerializeToString(),\n        status=200,\n    )\n    r.headers[\"Content-Type\"] = \"application/octet-stream\"\n    return r\n\n\n@app.route(\"/\", methods=[\"POST\"])\ndef process_network_msgs() -> flask.Response:\n    data = flask.request.get_data()\n    obj_msg = _deserialize(blob=data, from_bytes=True)\n    if isinstance(obj_msg, SignedImmediateSyftMessageWithReply):\n        print(\n            f\"Signaling server SignedImmediateSyftMessageWithReply: {obj_msg.message} watch\"\n        )\n        reply = network.recv_immediate_msg_with_reply(msg=obj_msg)\n        r = Response(response=reply.serialize(to_bytes=True), status=200)\n        r.headers[\"Content-Type\"] = \"application/octet-stream\"\n        return r\n    elif isinstance(obj_msg, SignedImmediateSyftMessageWithoutReply):\n        print(\n            f\"Signaling server SignedImmediateSyftMessageWithoutReply: {obj_msg.message} watch\"\n        )\n        network.recv_immediate_msg_without_reply(msg=obj_msg)\n        r = Response(status=200)\n        return r\n    else:\n        print(\n            f\"Signaling server SignedImmediateSyftMessageWithoutReply: {obj_msg.message} watch\"\n        )\n        network.recv_eventual_msg_without_reply(msg=obj_msg)\n        r = Response(status=200)\n        return r\n\n\ndef run() -> None:\n    global network\n    print(\"====================================\")\n    print(\"========== NODE ROOT KEY ===========\")\n    print(\"====================================\")\n    # this signing_key is to aid in local development and is not used in the real\n    # PyGrid implementation\n    PORT = os.getenv(\"PORT\", 5000)\n    print(f\"Starting Node on PORT: {PORT}\")\n    print(network.signing_key.encode(encoder=HexEncoder).decode(\"utf-8\"), \"\\n\")\n    app.run(host=\"0.0.0.0\", port=int(PORT))  # nosec\n\n\nrun()\n", "path": "src/syft/grid/example_nodes/network.py"}], "after_files": [{"content": "\"\"\"\nThe purpose of this application is to allow us to dev and test PySyft\nfunctionality on an actual local network. This is NOT meant to be run in\nproduction (that's the *actual* grid's job).\n\nFor example:\n$ python src/syft/grid/example_nodes/network.py\n\n\"\"\"\n# stdlib\nimport os\nimport sys\n\n# third party\nimport flask\nfrom flask import Flask\nfrom flask import Response\nfrom nacl.encoding import HexEncoder\n\n# syft absolute\nfrom syft.core.common.message import SignedImmediateSyftMessageWithReply\nfrom syft.core.common.message import SignedImmediateSyftMessageWithoutReply\nfrom syft.core.common.serde.deserialize import _deserialize\nfrom syft.core.node.network.network import Network\nfrom syft.grid.services.signaling_service import PullSignalingService\nfrom syft.grid.services.signaling_service import PushSignalingService\nfrom syft.grid.services.signaling_service import RegisterDuetPeerService\n\napp = Flask(__name__)\n\nnetwork = Network(name=\"om-net\")\n\nnetwork.immediate_services_without_reply.append(PushSignalingService)\nnetwork.immediate_services_with_reply.append(PullSignalingService)\nnetwork.immediate_services_with_reply.append(RegisterDuetPeerService)\nnetwork._register_services()  # re-register all services including SignalingService\n\n\n@app.route(\"/metadata\")\ndef get_metadata() -> flask.Response:\n    metadata = network.get_metadata_for_client()\n    metadata_proto = metadata.serialize()\n    r = Response(\n        response=metadata_proto.SerializeToString(),\n        status=200,\n    )\n    r.headers[\"Content-Type\"] = \"application/octet-stream\"\n    return r\n\n\n@app.route(\"/\", methods=[\"POST\"])\ndef process_network_msgs() -> flask.Response:\n    data = flask.request.get_data()\n    obj_msg = _deserialize(blob=data, from_bytes=True)\n    if isinstance(obj_msg, SignedImmediateSyftMessageWithReply):\n        print(\n            f\"Signaling server SignedImmediateSyftMessageWithReply: {obj_msg.message} watch\"\n        )\n        reply = network.recv_immediate_msg_with_reply(msg=obj_msg)\n        r = Response(response=reply.serialize(to_bytes=True), status=200)\n        r.headers[\"Content-Type\"] = \"application/octet-stream\"\n        return r\n    elif isinstance(obj_msg, SignedImmediateSyftMessageWithoutReply):\n        print(\n            f\"Signaling server SignedImmediateSyftMessageWithoutReply: {obj_msg.message} watch\"\n        )\n        network.recv_immediate_msg_without_reply(msg=obj_msg)\n        r = Response(status=200)\n        return r\n    else:\n        print(\n            f\"Signaling server SignedImmediateSyftMessageWithoutReply: {obj_msg.message} watch\"\n        )\n        network.recv_eventual_msg_without_reply(msg=obj_msg)\n        r = Response(status=200)\n        return r\n\n\ndef run() -> None:\n    global network\n\n    IP_MODE = os.getenv(\"IP_MODE\", \"IPV4\")  # default to ipv4\n    if len(sys.argv) > 1:\n        IP_MODE = sys.argv[1]\n\n    IP_MODE = \"IPV6\" if IP_MODE == \"IPV6\" else \"IPV4\"\n    # this signing_key is to aid in local development and is not used in the real\n    # PyGrid implementation\n    HOST = \"0.0.0.0\" if IP_MODE == \"IPV4\" else \"::\"  # nosec\n    PORT = os.getenv(\"PORT\", 5000)\n\n    print(\"====================================\")\n    print(\"========== NODE ROOT KEY ===========\")\n    print(\"====================================\")\n    print(network.signing_key.encode(encoder=HexEncoder).decode(\"utf-8\"), \"\\n\")\n\n    print(f\"Using {IP_MODE} and listening on port {PORT}\")\n\n    app.run(host=HOST, port=int(PORT))\n\n\nrun()\n", "path": "src/syft/grid/example_nodes/network.py"}]}