[Pidgin] #15684: BOSH does not process all responses in buffer

Pidgin trac at pidgin.im
Fri Jul 5 10:25:44 EDT 2013


#15684: BOSH does not process all responses in buffer
--------------------+-----------------------
 Reporter:  flopma  |      Owner:
     Type:  defect  |     Status:  new
Milestone:          |  Component:  libpurple
  Version:  2.10.7  |   Keywords:  bosh
--------------------+-----------------------
 Hi,

 For pidgin connected via BOSH/XMPP.

 If 2 or more server replies are read inside function
 jabber_bosh_http_connection_process(PurpleHTTPConnection *conn) only the
 first reply will be processed by function http_received_cb().

 For example, when Pidgin reads


 {{{
 (14:21:48) jabber: BOSH server sent: HTTP/1.1 200 OK
 Date: Fri, 05 Jul 2013 12:20:48 GMT
 Server: Jetty(7.x.y-SNAPSHOT)
 Access-Control-Allow-Origin: *
 Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE,
 MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT,
 UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
 Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
 User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
 Cache-Control
 Access-Control-Max-Age: 86400
 Content-Type: text/xml;charset=UTF-8
 Content-Length: 57
 Proxy-Connection: Keep-Alive
 Connection: Keep-Alive

 <body xmlns="http://jabber.org/protocol/httpbind"></body>HTTP/1.1 200 OK
 Date: Fri, 05 Jul 2013 12:21:48 GMT
 Server: Jetty(7.x.y-SNAPSHOT)
 Access-Control-Allow-Origin: *
 Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE,
 MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT,
 UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
 Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
 User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
 Cache-Control
 Access-Control-Max-Age: 86400
 Content-Type: text/xml;charset=UTF-8
 Content-Length: 152
 Proxy-Connection: Keep-Alive
 Connection: Keep-Alive

 <body xmlns='http://jabber.org/protocol/httpbind'><iq
 xmlns="jabber:client" type="result" id="purplef3ce4cf9"
 to="gorisis at xmpp.citnet/98a19540"/></body>
 (14:21:48) jabber: RecvBOSH (ssl)(57): <body
 xmlns="http://jabber.org/protocol/httpbind"></body>HTTP/1.1 200 OK
 Date: Fri, 05 Jul 2013 12:21:48 GMT
 Server: Jetty(7.x.y-SNAPSHOT)
 Access-Control-Allow-Origin: *
 Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE,
 MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT,
 UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
 Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
 User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
 Cache-Control
 Access-Control-Max-Age: 86400
 Content-Type: text/xml;charset=UTF-8
 Content-Length: 152
 Proxy-Connection: Keep-Alive
 Connection: Keep-Alive

 <body xmlns='http://jabber.org/protocol/httpbind'><iq
 xmlns="jabber:client" type="result" id="purplef3ce4cf9"
 to="gorisis at xmpp.citnet/98a19540"/></body>
 }}}

 only the 1st reply (the empty <body/>) will be processed. Pidgin will not
 process the ping reply and this will lead to a time out.

 Probably linked to bug #15679

-- 
Ticket URL: <https://developer.pidgin.im/ticket/15684>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list