NSIS-ka
A free C++ implementation of NSIS protocols

Changeset 4084


Ignore:
Timestamp:
Jul 9, 2009, 10:22:31 AM (8 years ago)
Author:
bless
Message:
  • modified capability class to advertise SCTP depending on the global configuration parameter set/unset
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ntlp/branches/20080820-configpar/src/capability.cpp

    r3857 r4084  
    5555#ifdef _USE_SCTP
    5656  // 1st: SCTP @ port tcpport ( "3" == SCTP )
    57   if (global_ntlpstarterthread_p->get_param().sctpenable)
    58   {
    59     stackprofile_tmp=new stackprofile;
    60     stackprofile_tmp->addprotocol(stackprofile::MA_Protocol_ID_SCTP);
    61     stackprops.push_back(stackprofile_tmp);
    62     maopt_tmp=new ma_protocol_option(stackprofile::MA_Protocol_ID_SCTP,profindex,false);
    63     query_maopt_tmp=new ma_protocol_option(*maopt_tmp);
    64     querystackconfs.push_back(query_maopt_tmp); // omit options data for query
    65     maopt_tmp->add16(sctpport); // add port number for response
    66     stackconfs.push_back(maopt_tmp);
    67     profindex++;
    68   }
     57  stackprofile_tmp=new stackprofile;
     58  stackprofile_tmp->addprotocol(stackprofile::MA_Protocol_ID_SCTP);
     59  stackprops.push_back(stackprofile_tmp);
     60  maopt_tmp=new ma_protocol_option(stackprofile::MA_Protocol_ID_SCTP,profindex,false);
     61  query_maopt_tmp=new ma_protocol_option(*maopt_tmp);
     62  querystackconfs.push_back(query_maopt_tmp); // omit options data for query
     63  maopt_tmp->add16(sctpport); // add port number for response
     64  stackconfs.push_back(maopt_tmp);
     65  profindex++;
    6966#endif
    7067
     
    126123
    127124#ifdef _USE_SCTP
    128   // SCTP
    129   if (global_ntlpstarterthread_p->get_param().sctpenable)
    130   {
    131     reliableprotocols.push_back(prot_sctp);
    132   }
     125  reliableprotocols.push_back(prot_sctp);
    133126#endif
    134127
     
    307300    for (unsigned int i = 0; i<stackprops.size();i++)
    308301    {
    309       if (stackprops[i])
    310         sp->add_profile(*stackprops[i]);
     302            if (stackprops[i])
     303            {
     304                    // only add SCTP if configured
     305                    if ( stackprops[i]->prof_vec[0] == stackprofile::MA_Protocol_ID_SCTP )
     306                    {
     307                            if (gconf.getpar<bool>(gistconf_advertise_sctp))
     308                                    sp->add_profile(*stackprops[i]);                       
     309                    }
     310                    else
     311                    { // no restrictions on other protocols so far
     312                            sp->add_profile(*stackprops[i]);
     313                    }
     314            }
    311315    } // end for
    312316  }
     
    336340    {
    337341      if (querystackconfs[i])
    338         sc->add_protoption(*querystackconfs[i]);
     342      {
     343              if (querystackconfs[i]->get_protocol() == prot_sctp)
     344              {
     345                      if (gconf.getpar<bool>(gistconf_advertise_sctp))
     346                      {
     347                              sc->add_protoption(*querystackconfs[i]);
     348                      }
     349              }
     350              else
     351              {
     352                      sc->add_protoption(*querystackconfs[i]);
     353              }
     354      }
    339355    } // endfor
    340356  }
     
    367383    {
    368384      if (stackprops[i])
    369         sp2->add_profile(*stackprops[i]);
    370     }
     385      {
     386              // only add SCTP if configured
     387              if ( stackprops[i]->prof_vec[0] == stackprofile::MA_Protocol_ID_SCTP )
     388              {
     389                      if (gconf.getpar<bool>(gistconf_advertise_sctp))
     390                              sp2->add_profile(*stackprops[i]);                     
     391              }
     392              else
     393              { // no restrictions on other protocols so far
     394                      sp2->add_profile(*stackprops[i]);
     395              }
     396      }
     397    } // end for
    371398  }
    372399  else
     
    390417    for (unsigned int i = 0; i<stackconfs.size(); i++)
    391418    {
    392       if (stackconfs[i])
    393         sc2->add_protoption(*stackconfs[i]);
    394     }
     419            if (stackconfs[i])
     420            {
     421                    if (stackconfs[i]->get_protocol() == prot_sctp)
     422                    {
     423                            if (gconf.getpar<bool>(gistconf_advertise_sctp))
     424                            {
     425                                    sc2->add_protoption(*stackconfs[i]);
     426                            }
     427                    }
     428                    else
     429                    {
     430                            sc2->add_protoption(*stackconfs[i]);
     431                    }
     432                   
     433            }
     434    } // end for
    395435  }
    396436  else
Note: See TracChangeset for help on using the changeset viewer.