jingle-ibb/ibb.c
changeset 123 58bd57666ef9
parent 122 8969dc3e2f14
child 124 7773e8147c29
equal deleted inserted replaced
122:8969dc3e2f14 123:58bd57666ef9
    44 gboolean jingle_ibb_cmp(gconstpointer data1, gconstpointer data2);
    44 gboolean jingle_ibb_cmp(gconstpointer data1, gconstpointer data2);
    45 void jingle_ibb_tomessage(gconstpointer data, LmMessageNode *node);
    45 void jingle_ibb_tomessage(gconstpointer data, LmMessageNode *node);
    46 const gchar* jingle_ibb_xmlns(void);
    46 const gchar* jingle_ibb_xmlns(void);
    47 gconstpointer jingle_ibb_new(void);
    47 gconstpointer jingle_ibb_new(void);
    48 void jingle_ibb_send(session_content *sc, gconstpointer data, gchar *buf, gsize size);
    48 void jingle_ibb_send(session_content *sc, gconstpointer data, gchar *buf, gsize size);
       
    49 void jingle_ibb_end(session_content *sc, gconstpointer data);
    49 static void _send_internal(session_content *sc, const gchar *to, gchar *buf,
    50 static void _send_internal(session_content *sc, const gchar *to, gchar *buf,
    50                            gsize size, const gchar *sid, gint64 *seq);
    51                            gsize size, const gchar *sid, gint64 *seq);
    51 
    52 
    52 static void jingle_ibb_init(void);
    53 static void jingle_ibb_init(void);
    53 static void jingle_ibb_uninit(void);
    54 static void jingle_ibb_uninit(void);
    61   jingle_ibb_xmlns,
    62   jingle_ibb_xmlns,
    62   jingle_ibb_check,
    63   jingle_ibb_check,
    63   jingle_ibb_tomessage,
    64   jingle_ibb_tomessage,
    64   jingle_ibb_cmp,
    65   jingle_ibb_cmp,
    65   jingle_ibb_new,
    66   jingle_ibb_new,
    66   jingle_ibb_send
    67   jingle_ibb_send,
       
    68   jingle_ibb_end
    67 };
    69 };
    68 
    70 
    69 module_info_t  info_jingle_inbandbytestream = {
    71 module_info_t  info_jingle_inbandbytestream = {
    70   .branch          = MCABBER_BRANCH,
    72   .branch          = MCABBER_BRANCH,
    71   .api             = MCABBER_API_VERSION,
    73   .api             = MCABBER_API_VERSION,
   293   
   295   
   294     jibb->dataleft-=jibb->blocksize;
   296     jibb->dataleft-=jibb->blocksize;
   295   
   297   
   296     g_memmove(jibb->buf, jibb->buf+jibb->blocksize, jibb->dataleft);
   298     g_memmove(jibb->buf, jibb->buf+jibb->blocksize, jibb->dataleft);
   297   
   299   
   298     _send_internal(sc, sess->to, buffer, jibb->blocksize, sess->sid, &jibb->seq);
   300     _send_internal(sc, sess->to, buffer, jibb->blocksize, sess->sid,
       
   301                    &jibb->seq);
   299   
   302   
   300     g_free(buf);
   303     g_free(buf);
   301   }
   304   }
       
   305 }
       
   306 
       
   307 void jingle_ibb_end(session_content *sc, gconstpointer data)
       
   308 {
       
   309   JingleIBB *jibb = (JingleIBB*)data;
       
   310   JingleSession *sess = session_find_by_sid(sc->sid, sc->from);
       
   311   
       
   312   if (jibb->dataleft > 0) {
       
   313     _send_internal(sc, sess->to, jibb->buf, jibb->dataleft, sess->sid,
       
   314                    &jibb->seq);
       
   315   }
       
   316   
       
   317   g_free(jibb->buf);
   302 }
   318 }
   303 
   319 
   304 static void jingle_ibb_unregister_lm_handlers(void)
   320 static void jingle_ibb_unregister_lm_handlers(void)
   305 {
   321 {
   306   if (lconnection) {
   322   if (lconnection) {