about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--091socket.cc37
1 files changed, 18 insertions, 19 deletions
diff --git a/091socket.cc b/091socket.cc
index 53cd10e8..bd973036 100644
--- a/091socket.cc
+++ b/091socket.cc
@@ -13,25 +13,6 @@ struct socket_t {
   }
 };
 
-:(code)
-socket_t* server_socket(int portno) {
-  socket_t* result = new socket;
-  result->fd = socket(AF_INET, SOCK_STREAM, 0);
-  int dummy = 0;
-  setsockopt(result->fd, SOL_SOCKET, SO_REUSEADDR, &dummy, sizeof(dummy));
-  result->addr.sin_family = AF_INET;
-  result->addr.sin_addr.s_addr = INADDR_ANY;
-  result->addr.sin_port = htons(portno);
-  if (bind(result->fd, (struct sockaddr*)&result->addr, sizeof(result->addr)) < 0) {
-    close(result->fd);
-    result->fd = -1;
-    raise << "Failed to bind result socket to port " << portno << ". Something's already using that port.\n" << end();
-    return;
-  }
-  listen(result->fd, /*queue length*/5);
-  return result;
-}
-
 :(before "End Primitive Recipe Declarations")
 _SOCKET,
 :(before "End Primitive Recipe Numbers")
@@ -70,6 +51,24 @@ case _SOCKET: {
   products.at(0).push_back(static_cast<double>(result));
   break;
 }
+:(code)
+socket_t* server_socket(int portno) {
+  socket_t* result = new socket_t;
+  result->fd = socket(AF_INET, SOCK_STREAM, 0);
+  int dummy = 0;
+  setsockopt(result->fd, SOL_SOCKET, SO_REUSEADDR, &dummy, sizeof(dummy));
+  result->addr.sin_family = AF_INET;
+  result->addr.sin_addr.s_addr = INADDR_ANY;
+  result->addr.sin_port = htons(portno);
+  if (bind(result->fd, (struct sockaddr*)&result->addr, sizeof(result->addr)) < 0) {
+    close(result->fd);
+    result->fd = -1;
+    raise << "Failed to bind result socket to port " << portno << ". Something's already using that port.\n" << end();
+    return result;
+  }
+  listen(result->fd, /*queue length*/5);
+  return result;
+}
 
 :(code)
 void session_socket(int serverfd, socket_t* session) {