Changeset 3579

Show
Ignore:
Timestamp:
08/22/08 15:16:14 (3 months ago)
Author:
bellmich
Message:

several fixes which were discovered during http client tests

Location:
plugins/syncml/src
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • plugins/syncml/src/syncml-http-client

    r3571 r3579  
    2121   </AdvancedOption> 
    2222   <AdvancedOption> 
    23      <DisplayName>URL fo the remote server</DisplayName> 
    24      <Name>URL</Name> 
    25      <Type>string</Type> 
    26      <Value>http://127.0.0.1:8080</Value> 
     23     <DisplayName>Path for the remote server</DisplayName> 
     24     <Name>Path</Name> 
     25     <Type>string</Type> 
     26     <Value></Value> 
    2727   </AdvancedOption> 
    2828   <AdvancedOption> 
     
    149149    <Password></Password> 
    150150  </Authentication> 
     151  <Connection> 
     152    <Network> 
     153      <Address>127.0.0.1</Address> 
     154      <Port>8080</Port> 
     155      <Protocol>http</Protocol> 
     156    </Network> 
     157  </Connection> 
    151158 
    152159  <!-- To be filed by UI or hand: 
  • plugins/syncml/src/syncml-http-server

    r3571 r3579  
    9999  <Resources> 
    100100    <Resource> 
    101       <Name>Contacts</Name> 
    102       <ObjType>contact</ObjType> 
     101      <Enabled>1</Enabled> 
    103102      <Formats> 
    104103        <Format> 
     
    106105        </Format> 
    107106      </Formats> 
    108       <Enabled>1</Enabled> 
     107      <Name>Contacts</Name> 
     108      <ObjType>contact</ObjType> 
    109109    </Resource> 
    110110    <Resource> 
    111       <Name>Calendar</Name> 
    112       <ObjType>event</ObjType> 
     111      <Enabled>1</Enabled> 
    113112      <Formats> 
    114113        <Format> 
     
    116115        </Format> 
    117116      </Formats> 
    118       <Enabled>1</Enabled> 
     117      <Name>Calendar</Name> 
     118      <ObjType>event</ObjType> 
    119119    </Resource> 
    120120    <Resource> 
    121       <Name>Notes</Name> 
    122       <ObjType>note</ObjType> 
     121      <Enabled>1</Enabled> 
    123122      <Formats> 
    124123        <Format> 
     
    126125        </Format> 
    127126      </Formats> 
    128       <Enabled>1</Enabled> 
     127      <Name>Notes</Name> 
     128      <ObjType>note</ObjType> 
    129129    </Resource> 
    130130  </Resources> 
  • plugins/syncml/src/syncml_common.c

    r3573 r3579  
    431431osync_bool discover(const char *name, void *data, OSyncPluginInfo *info, OSyncError **error) 
    432432{ 
    433         osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, error); 
     433        osync_trace(TRACE_ENTRY, "%s(%s, %p, %p, %p)", __func__, name, data, info, error); 
    434434         
    435435        SmlPluginEnv *env = (SmlPluginEnv *)data; 
     
    459459                OSyncError **oerror) 
    460460{ 
    461         osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, dsObject, config, oerror); 
     461        osync_trace(TRACE_ENTRY, "%s(%d, %p, %p, %p)", 
     462                __func__, tsp, dsObject, config, oerror); 
    462463        OSyncPluginConnection *conn; 
     464        char *url = NULL; 
    463465        SmlError *error = NULL; 
    464466 
     
    525527                            !smlDataSyncSetOption(dsObject, "CONNECTION_TYPE", "NET", &error)) 
    526528                                goto error; 
    527                         char *port = g_strdup_printf("%u", osync_plugin_connection_net_get_port(conn)); 
    528                         if (!smlDataSyncSetOption(dsObject, "PORT", port, &error)) 
     529                        if (tsp == SML_TRANSPORT_HTTP_CLIENT) 
    529530                        { 
     531                                url = g_strdup_printf("%s://%s:%d", 
     532                                                osync_plugin_connection_net_get_protocol(conn), 
     533                                                osync_plugin_connection_net_get_address(conn), 
     534                                                osync_plugin_connection_net_get_port(conn)); 
     535                        } else { 
     536                                char *port = g_strdup_printf("%u", osync_plugin_connection_net_get_port(conn)); 
     537                                if (!smlDataSyncSetOption(dsObject, "PORT", port, &error)) 
     538                                { 
     539                                        smlSafeCFree(&port); 
     540                                        goto error; 
     541                                } 
    530542                                smlSafeCFree(&port); 
    531                                 goto error; 
    532543                        } 
    533                         smlSafeCFree(&port); 
    534544                        break; 
    535545                case OSYNC_PLUGIN_CONNECTION_UNKNOWN: 
     
    597607                } else if (!strcmp(SYNCML_PLUGIN_CONFIG_PROXY, name)) { 
    598608                        key = "PROXY"; 
    599                 } else if (!strcmp(SYNCML_PLUGIN_CONFIG_URL, name)) { 
    600                         key = "URL"; 
     609                } else if (!strcmp(SYNCML_PLUGIN_CONFIG_PATH, name)) { 
     610                        /* build URL together with connection config */ 
     611                        char *value = g_strdup_printf("%s%s", url, val); 
     612                        safe_cfree(&url); 
     613                        if (!smlDataSyncSetOption(dsObject, "URL", value, &error)) { 
     614                                safe_cfree(&value); 
     615                                goto error; 
     616                        } 
     617                        safe_cfree(&value); 
    601618                } else if (!strcmp(SYNCML_PLUGIN_CONFIG_CAFILE, name)) { 
    602                         key = "CAFILE"; 
     619                        key = "SSL_CA_FILE"; 
    603620                } else if (!strcmp(SYNCML_PLUGIN_CONFIG_AUTH_TYPE, name)) { 
    604621                        key = "AUTH_TYPE"; 
     
    618635        } 
    619636 
    620         osync_trace(TRACE_EXIT, "%s", __func__); 
     637        osync_trace(TRACE_EXIT, "%s - TRUE", __func__); 
    621638        return TRUE; 
    622639error: 
     
    651668        env->dsObject1 = smlDataSyncNew(sessionType, tspType, &error); 
    652669        if (!env->dsObject1) 
    653                 goto error; 
     670                goto error_free_env; 
    654671        if (sessionType == SML_SESSION_TYPE_CLIENT) 
    655672        { 
    656673                env->dsObject2 = smlDataSyncNew(sessionType, tspType, &error); 
    657674                if (!env->dsObject2) 
    658                         goto error; 
     675                        goto error_free_env; 
    659676        } 
    660677 
     
    707724                smlDataSyncRegisterChangeStatusCallback(env->dsObject2, _recv_change_status); 
    708725        } 
     726        osync_trace(TRACE_INTERNAL, "%s: config loaded", __func__); 
    709727 
    710728        /* configure databases */ 
  • plugins/syncml/src/syncml_common.h

    r3573 r3579  
    7070#define SYNCML_PLUGIN_CONFIG_ONLYLOCALTIME "OnlyLocaltime" 
    7171 
    72 #define SYNCML_PLUGIN_CONFIG_URL "Url" 
    73 #define SYNCML_PLUGIN_CONFIG_PORT "Port" 
     72#define SYNCML_PLUGIN_CONFIG_PATH "Path" 
    7473#define SYNCML_PLUGIN_CONFIG_CAFILE "CaFile" 
    7574#define SYNCML_PLUGIN_CONFIG_PROXY "Proxy" 
  • plugins/syncml/src/syncml_ds_client.c

    r3571 r3579  
    55SmlBool ds_client_init_databases(SmlPluginEnv *env, OSyncPluginInfo *info, OSyncError **oerror) 
    66{ 
     7 
     8        osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, env, info, oerror); 
    79        SmlDatabase *database = NULL; 
    810        SmlError *error = NULL; 
    911        OSyncPluginConfig *config = osync_plugin_info_get_config(info); 
     12        OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); 
    1013        unsigned int i, num_objtypes = osync_plugin_info_num_objtypes(info); 
     14        osync_trace(TRACE_INTERNAL, "%s: %d objtypes", __func__, num_objtypes); 
     15 
    1116 
    1217        for (i=0; i < num_objtypes; i++) { 
    1318                OSyncObjTypeSink *sink = osync_plugin_info_nth_objtype(info, i); 
    14                 const char *objtype = osync_objtype_sink_get_name(sink); 
     19                osync_bool sinkEnabled = osync_objtype_sink_is_enabled(sink); 
     20                osync_trace(TRACE_INTERNAL, "%s: enabled => %d", __func__, sinkEnabled); 
     21                if (!sinkEnabled) 
     22                        continue; 
    1523 
    16                 database->sink = sink; 
    17                  
     24 
    1825                OSyncObjTypeSinkFunctions functions; 
    1926                memset(&functions, 0, sizeof(functions)); 
     
    2229                functions.batch_commit = ds_client_batch_commit; 
    2330 
     31                const char *objtype = osync_objtype_sink_get_name(sink); 
    2432                OSyncPluginResource *res = osync_plugin_config_find_active_resource(config, objtype); 
    2533                if (!(database = syncml_config_parse_database(env, res, oerror))) 
    2634                        goto oerror; 
    2735                 
     36                database->sink = sink; 
     37 
     38                /* TODO: Handle all available format sinks! */ 
     39                OSyncList *fs = osync_plugin_resource_get_objformat_sinks(res); 
     40                OSyncObjFormatSink *fmtsink = osync_list_nth_data(fs, 0); 
     41                const char *objformat = osync_objformat_sink_get_objformat(fmtsink); 
     42 
     43                database->objformat = osync_format_env_find_objformat(formatenv, objformat); 
     44 
     45                /* TODO: Handle error about missing objformat in a nice way. */ 
     46                g_assert(database->objformat); 
     47 
     48                osync_objformat_ref(database->objformat); 
     49 
    2850                osync_objtype_sink_set_functions(sink, functions, database); 
     51 
     52                env->databases = g_list_append(env->databases, database); 
    2953 
    3054                if (!smlDataSyncAddDatastore( 
     
    3559                                        &error)) 
    3660                                goto error; 
     61                if (!smlDataSyncAddDatastore( 
     62                                        env->dsObject2, 
     63                                        get_database_pref_content_type(database, oerror), 
     64                                        NULL, 
     65                                        database->url, 
     66                                        &error)) 
     67                                goto error; 
    3768        } 
     69        osync_trace(TRACE_EXIT, "%s - TRUE", __func__); 
    3870        return TRUE; 
    3971error: 
     
    4173        smlErrorDeref(&error); 
    4274oerror: 
     75        osync_trace(TRACE_EXIT_ERROR, "%s - %s", __func__, osync_error_print(oerror)); 
    4376        return FALSE; 
    4477} 
    45          
     78 
    4679void ds_client_get_changeinfo(void *data, OSyncPluginInfo *info, OSyncContext *ctx) 
    4780{ 
  • plugins/syncml/src/syncml_ds_server.c

    r3571 r3579  
    55SmlBool ds_server_init_databases(SmlPluginEnv *env, OSyncPluginInfo *info, OSyncError **oerror) 
    66{ 
    7         smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, env, info, oerror); 
     7        osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, env, info, oerror); 
    88        SmlDatabase *database = NULL; 
    99        SmlError *error = NULL; 
     
    1111        OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); 
    1212        unsigned int i, num_objtypes = osync_plugin_info_num_objtypes(info); 
    13         smlTrace(TRACE_INTERNAL, "%s: %d objtypes", __func__, num_objtypes); 
     13        osync_trace(TRACE_INTERNAL, "%s: %d objtypes", __func__, num_objtypes); 
    1414 
    1515        for (i=0; i < num_objtypes; i++) { 
    1616                OSyncObjTypeSink *sink = osync_plugin_info_nth_objtype(info, i); 
    1717                osync_bool sinkEnabled = osync_objtype_sink_is_enabled(sink); 
    18                 smlTrace(TRACE_INTERNAL, "%s: enabled => %d", __func__, sinkEnabled); 
     18                osync_trace(TRACE_INTERNAL, "%s: enabled => %d", __func__, sinkEnabled); 
    1919                if (!sinkEnabled) 
    2020                        continue; 
     
    5757                                goto error; 
    5858        } 
    59         smlTrace(TRACE_EXIT, "%s - TRUE", __func__); 
     59        osync_trace(TRACE_EXIT, "%s - TRUE", __func__); 
    6060        return TRUE; 
    6161error: 
     
    6363        smlErrorDeref(&error); 
    6464oerror: 
    65         smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, osync_error_print(oerror)); 
     65        osync_trace(TRACE_EXIT_ERROR, "%s - %s", __func__, osync_error_print(oerror)); 
    6666        return FALSE; 
    6767} 
  • plugins/syncml/src/syncml_http_client.c

    r3573 r3579  
    5656                goto error; 
    5757 
     58        osync_trace(TRACE_EXIT, "%s - %p", __func__, env); 
     59        return env; 
    5860error: 
    59         osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(oerror)); 
     61        osync_trace(TRACE_EXIT_ERROR, "%s - %s", __func__, osync_error_print(oerror)); 
    6062        return NULL; 
    6163} 
  • plugins/syncml/src/syncml_http_server.c

    r3573 r3579  
    3232                goto error; 
    3333 
     34        osync_trace(TRACE_EXIT, "%s - %p", __func__, env); 
     35        return env; 
    3436error: 
    3537        osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(oerror)); 
  • plugins/syncml/src/syncml_obex_client.c

    r3573 r3579  
    4949        osync_trace(TRACE_EXIT, "%s: %p", __func__, env); 
    5050        return (void *)env; 
    51  
    5251error_free_env: 
    5352        finalize(env);