summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@googlemail.com>2012-08-20 21:52:32 +0100
committerDominik Picheta <dominikpicheta@googlemail.com>2012-08-20 21:52:32 +0100
commit99698ec5d88ed233d787eea919e3136d927d8494 (patch)
treecad0aa7ae524f75e059da222faef5bb152af0544
parente17a778d56f17d5ac92e8ad8115fdb1ceb727336 (diff)
parent6ab873cc637784328e310d28c42e30001a6238c1 (diff)
downloadNim-99698ec5d88ed233d787eea919e3136d927d8494.tar.gz
Merge branch 'master' of git://github.com/fowlmouth/Nimrod into fowlmouth-master
-rwxr-xr-xlib/pure/sockets.nim9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/pure/sockets.nim b/lib/pure/sockets.nim
index 28f0a325e..ec1817e72 100755
--- a/lib/pure/sockets.nim
+++ b/lib/pure/sockets.nim
@@ -1205,7 +1205,7 @@ proc recvAsync*(socket: TSocket, s: var TaintedString): bool =
   result = True
 
 proc recvFrom*(socket: TSocket, data: var string, length: int,
-               address: var string, flags = 0'i32): int =
+               address: var string, port: var TPort, flags = 0'i32): int =
   ## Receives data from ``socket``. This function should normally be used with
   ## connection-less sockets (UDP sockets).
   ##
@@ -1215,7 +1215,7 @@ proc recvFrom*(socket: TSocket, data: var string, length: int,
   ## function will make no effort to return it.
   
   # TODO: Buffered sockets
-  data = newString(length)
+  data.setLen(length)
   var sockAddress: Tsockaddr_in
   var addrLen = sizeof(sockAddress).TSockLen
   result = recvFrom(socket.fd, cstring(data), length.cint, flags.cint,
@@ -1223,13 +1223,14 @@ proc recvFrom*(socket: TSocket, data: var string, length: int,
   
   if result != -1:
     address = $inet_ntoa(sockAddress.sin_addr)
+    port = ntohs(sockAddress.sin_port).TPort
 
 proc recvFromAsync*(socket: TSocket, data: var String, length: int,
-                    address: var string, flags = 0'i32): bool =
+                    address: var string, port: var TPort, flags = 0'i32): bool =
   ## Similar to ``recvFrom`` but raises an EOS error when an error occurs.
   ## Returns False if no messages could be received from ``socket``.
   result = true
-  var callRes = recvFrom(socket, data, length, address)
+  var callRes = recvFrom(socket, data, length, address, port, flags)
   if callRes < 0:
     when defined(windows):
       # TODO: Test on Windows