Diff for /mqtt/src/pubmqtt.c between versions 1.2.2.11 and 1.2.2.13

version 1.2.2.11, 2012/06/26 08:05:58 version 1.2.2.13, 2012/06/29 14:26:39
Line 247  mqtt_rtlm_chk_session(cfg_root_t *cfg, sqlite3 *sql, c Line 247  mqtt_rtlm_chk_session(cfg_root_t *cfg, sqlite3 *sql, c
  * @txtlen = text length   * @txtlen = text length
  * @user = username   * @user = username
  * @host = hostname   * @host = hostname
    * @qos = QoS
  * @retain = !=0 retain message to database   * @retain = !=0 retain message to database
  * return: -1 error, 0 no publish or >0 published ok   * return: -1 error, 0 no publish or >0 published ok
  */   */
 int  int
 mqtt_rtlm_write_topic(cfg_root_t *cfg, sqlite3 *sql, const char *connid, u_short msgid,   mqtt_rtlm_write_topic(cfg_root_t *cfg, sqlite3 *sql, const char *connid, u_short msgid, 
                const char *topic, void *txt, int txtlen, const char *user, const char *host, char retain)                const char *topic, void *txt, int txtlen, const char *user, 
                 const char *host, char qos, char retain)
 {  {
         int ret = 0;          int ret = 0;
         char *str, *psStmt;          char *str, *psStmt;
Line 266  mqtt_rtlm_write_topic(cfg_root_t *cfg, sqlite3 *sql, c Line 268  mqtt_rtlm_write_topic(cfg_root_t *cfg, sqlite3 *sql, c
                 mqtt_rtlm_log("Error:: not found topics table name");                  mqtt_rtlm_log("Error:: not found topics table name");
                 return -1;                  return -1;
         }          }
        psStmt = sqlite3_mprintf("INSERT INTO %s (Retain, ConnID, MsgID, Topic, Value, PubUser, "        psStmt = sqlite3_mprintf("INSERT INTO %s (QoS, Retain, ConnID, MsgID, Topic, Value, PubUser, "
                        "PubDate, PubHost) VALUES (%d, '%q', %u, '%q', ?1, '%q', "                        "PubDate, PubHost) VALUES (%d, %d, '%q', %u, '%q', ?1, '%q', "
                         "datetime('now', 'localtime'), '%q');",                           "datetime('now', 'localtime'), '%q');", 
                        str, retain, connid, msgid, topic, txt, user, host);                        str, qos, retain, connid, msgid, topic, user, host);
   
        if (sqlite3_prepare_v2(sql, psStmt, strlen(psStmt), &stmt, NULL)) {        if (sqlite3_prepare_v2(sql, psStmt, strlen(psStmt), &stmt, NULL) || !stmt) {
                 MQTT_RTLM_LOG(sql);                  MQTT_RTLM_LOG(sql);
                 sqlite3_free(psStmt);                  sqlite3_free(psStmt);
                 return -1;                  return -1;
Line 469  mqtt_rtlm_read_topic(cfg_root_t *cfg, sqlite3 *sql, co Line 471  mqtt_rtlm_read_topic(cfg_root_t *cfg, sqlite3 *sql, co
         /* calculate count of rows and allocate subscribe items */          /* calculate count of rows and allocate subscribe items */
         while (sqlite3_step(stmt) == SQLITE_ROW)          while (sqlite3_step(stmt) == SQLITE_ROW)
                 rowz++;                  rowz++;
        if (!(s = io_malloc((rowz + 1) * sizeof(mqtt_subscr_t)))) {        if (!(s = malloc((rowz + 1) * sizeof(mqtt_subscr_t)))) {
                 mqtt_rtlm_log("Error:: System #%d - %s", errno, strerror(errno));                  mqtt_rtlm_log("Error:: System #%d - %s", errno, strerror(errno));
                 goto end;                  goto end;
         } else          } else
Line 479  mqtt_rtlm_read_topic(cfg_root_t *cfg, sqlite3 *sql, co Line 481  mqtt_rtlm_read_topic(cfg_root_t *cfg, sqlite3 *sql, co
         /* fill with data */          /* fill with data */
         for (j = 0; j < rowz && sqlite3_step(stmt) == SQLITE_ROW; j++) {          for (j = 0; j < rowz && sqlite3_step(stmt) == SQLITE_ROW; j++) {
                 s[j].sub_ret = (char) sqlite3_column_int(stmt, 0);                  s[j].sub_ret = (char) sqlite3_column_int(stmt, 0);
                s[j].sub_topic.msg_base = (u_char*) io_strdup((char*) sqlite3_column_text(stmt, 1));                s[j].sub_topic.msg_base = (u_char*) strdup((char*) sqlite3_column_text(stmt, 1));
                 s[j].sub_topic.msg_len = strlen((char*) s[j].sub_topic.msg_base);                  s[j].sub_topic.msg_len = strlen((char*) s[j].sub_topic.msg_base);
                 AIT_SET_PTR(&v, (void*) sqlite3_column_blob(stmt, 2), sqlite3_column_bytes(stmt, 2));                  AIT_SET_PTR(&v, (void*) sqlite3_column_blob(stmt, 2), sqlite3_column_bytes(stmt, 2));
                 s[j].sub_value.msg_len = AIT_LEN(&v);                  s[j].sub_value.msg_len = AIT_LEN(&v);
                s[j].sub_value.msg_base = (u_char*) io_malloc(s[j].sub_value.msg_len);                s[j].sub_value.msg_base = (u_char*) malloc(s[j].sub_value.msg_len);
                 if (s[j].sub_value.msg_base)                  if (s[j].sub_value.msg_base)
                         memcpy(s[j].sub_value.msg_base, AIT_GET_PTR(&v), s[j].sub_value.msg_len);                          memcpy(s[j].sub_value.msg_base, AIT_GET_PTR(&v), s[j].sub_value.msg_len);
         }          }
Line 633  mqtt_rtlm_read_subscribe(cfg_root_t *cfg, sqlite3 *sql Line 635  mqtt_rtlm_read_subscribe(cfg_root_t *cfg, sqlite3 *sql
         /* calculate count of rows and allocate subscribe items */          /* calculate count of rows and allocate subscribe items */
         while (sqlite3_step(stmt) == SQLITE_ROW)          while (sqlite3_step(stmt) == SQLITE_ROW)
                 rowz++;                  rowz++;
        if (!(s = io_malloc((rowz + 1) * sizeof(mqtt_subscr_t)))) {        if (!(s = malloc((rowz + 1) * sizeof(mqtt_subscr_t)))) {
                 mqtt_rtlm_log("Error:: System #%d - %s", errno, strerror(errno));                  mqtt_rtlm_log("Error:: System #%d - %s", errno, strerror(errno));
                 goto end;                  goto end;
         } else          } else
Line 643  mqtt_rtlm_read_subscribe(cfg_root_t *cfg, sqlite3 *sql Line 645  mqtt_rtlm_read_subscribe(cfg_root_t *cfg, sqlite3 *sql
         /* fill with data */          /* fill with data */
         for (j = 0; j < rowz && sqlite3_step(stmt) == SQLITE_ROW; j++) {          for (j = 0; j < rowz && sqlite3_step(stmt) == SQLITE_ROW; j++) {
                 s[j].sub_ret = (char) sqlite3_column_int(stmt, 0);                  s[j].sub_ret = (char) sqlite3_column_int(stmt, 0);
                s[j].sub_topic.msg_base = (u_char*) io_strdup((char*) sqlite3_column_text(stmt, 1));                s[j].sub_topic.msg_base = (u_char*) strdup((char*) sqlite3_column_text(stmt, 1));
                 s[j].sub_topic.msg_len = strlen((char*) s[j].sub_topic.msg_base);                  s[j].sub_topic.msg_len = strlen((char*) s[j].sub_topic.msg_base);
                 s[j].sub_value.msg_base = NULL;                  s[j].sub_value.msg_base = NULL;
                 s[j].sub_value.msg_len = 0;                  s[j].sub_value.msg_len = 0;

Removed from v.1.2.2.11  
changed lines
  Added in v.1.2.2.13


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>