I have a simple SSI test client/server setup where the client serializes a Google Protocol Buffer and sends it to the server. Normally this works fine with the following log on the XRootD server:

180108 14:20:28 13298 ctadev.13684:20@localhost Ssi_close: /test del=True
180108 14:21:09 13354 XrootdXeq: ctadev.13913:22@localhost pvt IP64 login
[DEBUG] Service::Prepare():
[DEBUG]    Resource name: /test
[DEBUG]    Resource user: 
[DEBUG]    Resource info: 
[DEBUG]    Hosts to avoid: 
[DEBUG]    Affinity: Default
[DEBUG]    Resource options: 
[DEBUG]    Resource client name: NULL
180108 14:21:09 13354 ctadev.13913:22@localhost Ssi_open: /test prepared.
180108 14:21:09 13354 ctadev.13913:22@localhost Ssi_write: 0:/test rsz=4 wsz=4
180108 14:21:09 13354 ctadev.13913:22@localhost Ssi_Activate: 0:/test [new wtReq] oucbuff rqsz=4
180108 14:21:09 13237 ctadev.13913:22@localhost Ssi_DoIt: 0:/test [begun xqReq] Calling service processor
[DEBUG] RequestProc() constructor
[DEBUG] XrdSsiPbService::ProcessRequest(): Binding Processor to Request
180108 14:21:09 13237 ctadev.13913:22@localhost Ssi_BindDone: 0:/test [begun xqReq] Bind called; for request 0
[DEBUG] RequestProc::Execute()
180108 14:21:09 13237 ctadev.13913:22@localhost Ssi_GetRequest: 0:/test [bound xqReq] sz=4
RECEIVED MESSAGE:
{
 "cmd": "SEND_METADATA",
 "repeat": 0,
 "record": {
  "testDouble": 0,
  "testFloat": 0,
  "testInt32": 0,
  "testInt64": "0",
  "testUint32": 0,
  "testUint64": "0",
  "testSint32": 0,
  "testSint64": "0",
  "testFixed32": 0,
  "testFixed64": "0",
  "testSfixed32": 0,
  "testSfixed64": "0",
  "testBool": true,
  "testString": "",
  "testBytes": ""
 }
}

180108 14:21:09 13237 ctadev.13913:22@localhost Ssi_RelReqBuff: 0:/test [bound xqReq] called
180108 14:21:09 13237 ctadev.13913:22@localhost Ssi_ProcessResponse: 0:/test [bound xqReq] Response presented wtr=False
180108 14:21:09 13237 ctadev.13913:22@localhost Ssi_ProcessResponse: 0:/test [bound doRsp] Resp data sz=0
180108 14:21:09 13354 ctadev.13913:22@localhost Ssi_fctl: 0:/test query resp status
180108 14:21:09 13354 ctadev.13913:22@localhost Ssi_fctl: 0:/test resp ready
180108 14:21:09 13354 ctadev.13913:22@localhost Ssi_Done: 0:/test [bound odRsp] resp sent; no additional data remains
180108 14:21:09 13354 ctadev.13913:22@localhost Ssi_Finalize: 0:/test [bound odRsp] Calling Finished(False)
[DEBUG] RequestProc::Finished()
[DEBUG] XrdSsiPbService::ProcessRequest(): Unbinding Processor from Request
180108 14:21:09 13237 ctadev.13913:22@localhost Ssi_Unbind: 0:/test [bound odRsp] Recycling request...
[DEBUG] ~RequestProc() destructor
180108 14:21:09 13354 XrootdXeq: ctadev.13913:22@localhost disc 0:00:00
180108 14:21:09 13354 ctadev.13913:22@localhost Ssi_close: /test del=True

However, if all the Protocol Buffer fields contain default values or zero, this serializes to a zero-length message. In this case, XRootD refuses to accept the message:

180108 14:23:58 13236 XrootdXeq: ctadev.14185:20@localhost pvt IP64 login
[DEBUG] Service::Prepare():
[DEBUG]    Resource name: /test
[DEBUG]    Resource user: 
[DEBUG]    Resource info: 
[DEBUG]    Hosts to avoid: 
[DEBUG]    Affinity: Default
[DEBUG]    Resource options: 
[DEBUG]    Resource client name: NULL
180108 14:23:58 13236 ctadev.14185:20@localhost Ssi_open: /test prepared.
180108 14:23:58 13236 ctadev.14185:20@localhost Ssi_fctl: 0:/test query resp status
180108 14:23:58 13236 ssi_fctl: ctadev.14185:20@localhost Unable to fctl /test; no such process
180108 14:23:58 13236 XrootdXeq: ctadev.14185:20@localhost disc 0:00:00
180108 14:23:58 13236 ctadev.14185:20@localhost Ssi_close: /test del=True

The zero-length message should be accepted and processed in the same way as any other message.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/xrootd/xrootd","title":"xrootd/xrootd","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/xrootd/xrootd"}},"updates":{"snippets":[{"icon":"DESCRIPTION","message":"[SSI] Zero-length messages are not passed to server (#640)"}],"action":{"name":"View Issue","url":"https://github.com/xrootd/xrootd/issues/640"}}}

Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1