summaryrefslogtreecommitdiff
path: root/server/piztor/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/piztor/server.py')
-rw-r--r--server/piztor/server.py33
1 files changed, 15 insertions, 18 deletions
diff --git a/server/piztor/server.py b/server/piztor/server.py
index 89c7760..511d51b 100644
--- a/server/piztor/server.py
+++ b/server/piztor/server.py
@@ -216,7 +216,6 @@ class LocationRequestHandler(RequestHandler):
return _SectionSize.LENGTH + \
_SectionSize.OPT_ID + \
_SectionSize.STATUS + \
- _SectionSize.ENTRY_CNT + \
_SectionSize.LOCATION_ENTRY * item_num
def handle(self, tr_data):
@@ -240,19 +239,17 @@ class LocationRequestHandler(RequestHandler):
# Auth failure
if uauth is None:
logger.warning("Authentication failure")
- return struct.pack("!LBBL", LocationRequestHandler \
+ return struct.pack("!LBB", LocationRequestHandler \
._location_request_response_size(0),
_OptCode.location_request,
- _StatusCode.failure,
- 0)
+ _StatusCode.failure)
ulist = session.query(UserModel).filter(UserModel.gid == gid).all()
reply = struct.pack(
- "!LBBL",
+ "!LBB",
LocationRequestHandler._location_request_response_size(len(ulist)),
_OptCode.location_request,
- _StatusCode.sucess,
- len(ulist))
+ _StatusCode.sucess)
for user in ulist:
loc = user.location
@@ -260,6 +257,13 @@ class LocationRequestHandler(RequestHandler):
return reply
+def pack_int(val):
+ return struct.pack("!L", val)
+
+def pack_bool(val):
+ return struct.pack("!B", 0x01 if val else 0x00)
+
+
class UserInfoRequestHandler(RequestHandler):
_failed_response_size = \
@@ -272,24 +276,16 @@ class UserInfoRequestHandler(RequestHandler):
_OptCode.user_info_request,
_StatusCode.failure)
- @classmethod
- def pack_int(cls, val):
- return struct.pack("!L", val)
-
- @classmethod
- def pack_bool(cls, val):
- return struct.pack("!B", 0x01 if val else 0x00)
_code_map = {0x00 : ('gid', pack_int),
0x01 : ('sex', pack_bool)}
@classmethod
def pack_entry(cls, user, entry_code):
- attr, pack_method = _code_map(entry_code)
+ attr, pack_method = cls._code_map[entry_code]
info_key = entry_code
info_value = getattr(user, attr)
- return struct.pack("!B", info_key) + pack_method(info_value) + \
- struct.pack("!B", 0x00)
+ return struct.pack("!B", info_key) + pack_method(info_value)
def handle(self, tr_data):
logger.info("Reading user info request data...")
@@ -328,8 +324,9 @@ class UserInfoRequestHandler(RequestHandler):
except MultipleResultsFound:
raise DBCorruptedError()
- for code in _code_map:
+ for code in UserInfoRequestHandler._code_map:
reply += UserInfoRequestHandler.pack_entry(quser, code)
+ reply = struct.pack("!L", len(reply) + _SectionSize.LENGTH) + reply
return reply