aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzonedabone2011-05-08 18:31:12 +0000
committerzonedabone2011-05-08 18:31:12 +0000
commit3b13410f6c069dd8b72db602178357588fbabb26 (patch)
treeab0d49886bb775be3acfb90e887fc086469b668e
parent922f8ac40b67645e1fd3194b39d9f2b7dd26afc7 (diff)
Bugfixed server socket and no-reply commands. Everything should work now.
-rw-r--r--nxt/brick.py8
-rw-r--r--nxt/serversock.py4
-rw-r--r--nxt/telegram.py2
-rw-r--r--scripts/nxt_server.py29
4 files changed, 27 insertions, 16 deletions
diff --git a/nxt/brick.py b/nxt/brick.py
index ece5a7a..0bb2a05 100644
--- a/nxt/brick.py
+++ b/nxt/brick.py
@@ -25,8 +25,12 @@ def _make_poller(opcode, poll_func, parse_func):
ogram = poll_func(opcode, *args, **kwargs)
with self.lock:
self.sock.send(str(ogram))
- igram = Telegram(opcode=opcode, pkt=self.sock.recv())
- return parse_func(igram)
+ if ogram.reply:
+ igram = Telegram(opcode=opcode, pkt=self.sock.recv())
+ if ogram.reply:
+ return parse_func(igram)
+ else:
+ return None
return poll
class _Meta(type):
diff --git a/nxt/serversock.py b/nxt/serversock.py
index 61d5087..d69bc22 100644
--- a/nxt/serversock.py
+++ b/nxt/serversock.py
@@ -33,7 +33,7 @@ class ServerSock(object):
if self.debug:
print 'Connecting via Server...'
sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
- sock.connect(self.host, self.port)
+ sock.connect((self.host, self.port))
self.sock = sock
if self.debug:
print 'Connected.'
@@ -42,7 +42,7 @@ class ServerSock(object):
def close(self):
if self.debug:
print 'Closing Server connection...'
- sock.send('\x99')
+ self.sock.send('\x99')
self.sock.close()
if self.debug:
print 'Server connection closed.'
diff --git a/nxt/telegram.py b/nxt/telegram.py
index 1fc5b3e..cdc83cd 100644
--- a/nxt/telegram.py
+++ b/nxt/telegram.py
@@ -35,6 +35,7 @@ class Telegram(object):
TYPE_REPLY_NOT_REQUIRED = 0x80 # reply not required flag
def __init__(self, direct=False, opcode=0, reply_req=True, pkt=None):
+ self.reply = True
if pkt:
self.pkt = StringIO(pkt)
self.typ = self.parse_u8()
@@ -50,6 +51,7 @@ class Telegram(object):
typ |= Telegram.TYPE_NOT_DIRECT
if not reply_req:
typ |= Telegram.TYPE_REPLY_NOT_REQUIRED
+ self.reply = False
self.add_u8(typ)
self.add_u8(opcode)
diff --git a/scripts/nxt_server.py b/scripts/nxt_server.py
index 479ac9c..1a67215 100644
--- a/scripts/nxt_server.py
+++ b/scripts/nxt_server.py
@@ -16,22 +16,27 @@
# GNU General Public License for more details.
import nxt
+import socket
def serve(channel, details):
'handles serving the client'
+ print "Connection started (" + details[0] + ')'
run = True
- while run:
- data = channel.recv(1024)
- code = data[0]
- if code == '\x00' or code == '\x01' or code == '\x02':
- brick.sock.send(data)
- reply = brick.sock.recv()
- channel.send(reply)
- elif code == '\x80' or code == '\x81':
- brick.sock.send(data)
- elif code == '\x99':
- run = False
- channel.slose()
+ try:
+ while run:
+ data = channel.recv(1024)
+ code = data[0]
+ if code == '\x00' or code == '\x01' or code == '\x02':
+ brick.sock.send(data)
+ reply = brick.sock.recv()
+ channel.send(reply)
+ elif code == '\x80' or code == '\x81':
+ brick.sock.send(data)
+ elif code == '\x99':
+ run = False
+ channel.close()
+ except:
+ channel.close()
if __name__ == "__main__":
print "Connecting to NXT..."